Итак, я немного поработал над небольшим игровым проектом и наткнулся на препятствие, которое меня беспокоят бесконечно. Я загружаю файл obj, который затем визуализируется после помещения в VBO. Эта часть работает нормально, никаких проблем. Тем не менее, я пытался заставить его визуализировать сопровождающую текстуру с помощью прилагаемого UV, но безуспешно. В настоящее время я просто получаю матовую зеленую окраску на моей модели. Изучив его в GDE, я увидел, что текстура загружается нормально и занимает модуль GL_TEXTURE0, так что это не проблема. Я верю, что это может быть моим обязательным, но я понятия не имею, почему это не получится ...
void Model_Man::render_models()
{
for(int x=0; x<models.size(); x++)
{
if(models.at(x).visible==true)
{
glBindBuffer(GL_ARRAY_BUFFER,models.at(x).t_buff);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER,models.at(x).i_buff);
glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT,0,0);
glClientActiveTexture(GL_TEXTURE0);
glTexCoordPointer(2,GL_FLOAT,0,&models.at(x).uvs[0]);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glActiveTexture(GL_TEXTURE0);
int tex_loc = glGetUniformLocation(models.at(x).shaderid,"color_texture");
glUniform1i(tex_loc,GL_TEXTURE0);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, models.at(x).mats.at(0).texid);
c_render.use_program(models.at(x).shaderid);
glDrawElements(GL_TRIANGLES,models.at(x).f_index.size()*3,GL_UNSIGNED_INT,0);
c_render.use_program();
glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, 0);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_TEXTURE_COORD_ARRAY);
glDisable(GL_TEXTURE_2D);
}
}
}
И мои файлы шейдеров ...
Shader.frag
uniform sampler2D color_texture;
void main() {
// Set the output color of our current pixel
gl_FragColor = texture2D(color_texture, gl_TexCoord[0].st);
}
Shader.vert
void main() {
gl_TexCoord[0] = gl_MultiTexCoord0;
// Set the position of the current vertex
gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}
И да, я знаю, что в настоящее время я ужасно неэффективен с моим циклом рендеринга: P, но я уже планирую рефакторинг, я просто пытаюсь заставить эту единственную модель правильно рисовать со всем, к чему я стремлюсь делать. Я понятия не имею, почему он не будет рендериться с правильно примененной текстурой - если только это не потому, что мне нужно чередовать свои массивы, но я все еще снабжаю его ультрафиолетовыми данными, поэтому я не понимаю, почему это не удается.