OpenGL纹理问题:纹理与原始颜色混合在一起

时间:2016-03-12 18:52:52

标签: c++ opengl texturing

所以我对OpenGL和纹理都很陌生。我有一个像原始(2个三角形)的平面,我正试图将图像映射到。我已经完成了这两种方式。我编写使用sampler2d uniform的Fragment着色器的第一种方法,并调用texture2d将图像的像素映射到基元,这样工作正常,看起来像这样:

Correct

我采用的第二种方法是使用glEnable并且没有使用任何着色器,图像看起来像这样:

Wrong

很多这个代码都是一个工作项目,所以我不能发布很多但是我基本上是这样渲染的:

void draw()
{
    glColor4f(0.0, 1.0, 0.0, 1.0)

    glEnable(GL_TEXTURE_2D);
    glEnableClientState(GL_VERTEX_ARRAY);
    glEnableClientState(GL_NORMAL_ARRAY);
    glEnableClientState(GL_TEX_COORD_ARRAY);

    glBindTexture(GL_TEXTURE_2D, id);

    glVertexPointer(3, GL_FLOAT, 0, vertices);
    glNormalPointer(GL_FLOAT, 0, normals);
    glTexCoordPointer(2, GL_FLOAT, 0, texCoords);

   // then draw arrays....
   // disable client states


}

我知道绿色来自我的glColor电话,但我想我只是想了解幕后发生了什么?我想如果我在渲染之前调用glColor,那么任何图像都不会出现,因为它的颜色都是绿色的。从着色器的角度来看,这是完全合理的,但我不知道这个方法。我如何使用没有着色器的旧方法使其工作,就像我使用着色器一样?

0 个答案:

没有答案
相关问题