小编anf*_*0us的帖子

纹理渲染和VBO的[OpenGL/SDL/C++]

所以,我一直在研究一个小小的游戏项目,我遇到了一个令我讨厌的问题.我加载一个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);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我的着色器文件......

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);
}
Run Code Online (Sandbox Code Playgroud)

Shader.vert

void main() {           
    gl_TexCoord[0] = gl_MultiTexCoord0;

    // Set the position of the current vertex 
    gl_Position = …
Run Code Online (Sandbox Code Playgroud)

c++ opengl sdl glsl

2
推荐指数
1
解决办法
1014
查看次数

标签 统计

c++ ×1

glsl ×1

opengl ×1

sdl ×1