У меня есть простой вопрос OPENGL, в настоящее время я пытаюсь научиться текстурирования и вот часть I`m запутался об этом:OPENGL текстуры процесс инициализации
void initTextures()
{
GLuint gTextureSphere;
int width, height, channels = 1;
unsigned char* textureMapData = SOIL_load_image("res/texturemap.jpg", &width, &height, 0, SOIL_LOAD_RGB);
//texture map
glGenTextures(1,&gTextureSphere);
glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D,gTextureSphere);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, textureMapData);
SOIL_free_image_data(textureMapData);
glUniform1i(glGetUniformLocation(gProgramSphere, "normalTexture"), 0);
////////////////////////
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
}
Я думаю, что код выше читает мой образ " texturemap.jpg "на SOIL_load_image
и сохраните его на textureMapData
переменной. Теперь я хочу знать это, какова цель следующих 4 строк. Я имею в виду, я уже прочитал данные. Я помещаю эти данные в переменную gTextureSphere с этими следующими 4 строками? Я думаю, это невозможно, так как gTextureSphere является переменной типа GLuint. Может ли кто-нибудь объяснить мне?
gTextureSphere - это РУЧКА для вашей текстуры. Эти четыре строки создают новую текстуру и загружают данные из ОЗУ в память графического процессора. – BDL
@BDL благодарит за ответ, что вы хотите сказать HANDLE? и еще один вопрос, после этих строк, если я хочу получить доступ к моей текстуре, следует ли мне перечислить переменную gTextureSphere? –
Каждый объект opengl задается с помощью дескриптора. Это всего лишь целое число, идентифицирующее объект. Вы получаете доступ к текстурам, используя соответствующие функции OpenGL, и вы должны обязательно прочитать вводный учебник для OpenGL. – BDL