Я пытаюсь получить цвет определенного пикселя из определенной текстуры, используя OpenGL (C ++).Я смотрю на glGetTexImage()
, так как это выглядит как то, что я хочу, но я не могу понять контекст, в котором я должен поместить это.Я ошибся?Это не должен быть самый быстрый вариант, так как это не кадр за кадром;только когда игра запускается.
Текстура не будет отображаться на экране, а просто используется как способ получения информации.Я использую следующую функцию для загрузки текстуры.
GLuint TextureUtil::loadTexture(const char* filename, int* widthVar, int* heightVar) {
unsigned char* image = SOIL_load_image(filename, widthVar, heightVar, NULL, SOIL_LOAD_RGBA);
GLuint texture;
glGenTextures(1, &texture);
glBindTexture(GL_TEXTURE_2D, texture);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
if (image) {
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, *widthVar, *heightVar, 0, GL_RGBA, GL_UNSIGNED_BYTE, image);
glGenerateMipmap(GL_TEXTURE_2D);
} else {
std::cout << "ERROR: TextureUtil.cpp - Texture loading failed." << std::endl;
}
glActiveTexture(0);
glBindTexture(GL_TEXTURE_2D, 0);
SOIL_free_image_data(image);
return texture;
}