OpenGL的 - 无法呈现纹理映射后的白色以外的颜色(OpenGL - Unable to ren

2019-10-16 14:12发布

我试图渲染渲染有纹理其他多维数据集后的彩色立方体。 我有符合抽屉接口多个“抽屉”对象,我通过每一个参考对象GL每个单独实现类的拉伸(最终GL GL)方法。 但是,无论我做什么,我似乎无法使彩色立方体。

代码示例:

gl.glDisable(GL.GL_TEXTURE_2D);

gl.glColor3f( 1f, 0f, 0f );
gl.glBegin(GL.GL_QUADS);
// Front Face
Point3f point = player.getPosition();

gl.glNormal3f(0.0f, 0.0f, 1.0f);
//gl.glTexCoord2f(0.0f, 0.0f);

gl.glVertex3f(-point.x - 1.0f, -1.0f, -point.z + 1.0f);
//gl.glTexCoord2f(1.0f, 0.0f);

gl.glVertex3f(-point.x + 1.0f, -1.0f, -point.z + 1.0f);
//continue rendering rest of cube. ...
gl.glEnd();
gl.glEnable(GL.GL_TEXTURE_2D);

我也试着扔glColor3f每个顶点调用之前调用,但仍然给了我一个白色立方体。 这是怎么回事?

Answer 1:

还有,你需要确保你做一些事情。

第一关:

gl.glEnable(gl.GL_COLOR_MATERIAL);

这将让你渲染你的顶点。 (您的通话glColor3f之前执行此操作。)

如果这样还不能解决问题,确保您使用的是混合正确(如果你使用混合的。)

对于大多数应用程序,你可能想使用

gl.glEnable(gl.GL_BLEND);
gl.glBlendFunc(gl.GL_SRC_ALPHA,gl.GL_ONE_MINUS_SRC_ALPHA);

如果没有这些东西解决你的问题,你可能需要给我们介绍一下你在做/之前你的代码的这一部分设置些什么的更多信息。



Answer 2:

如果照明已启用,颜色来自材料,而不是glColor顶点颜色。 如果你提到你的绘制功能设置的纹理对象的材料(和纹理下,白色材料是常见的),那么该立方体的其余部分是白色的。 使用GL_COLOR_MATERIAL设立的OpenGL采取glColor命令和更新材料,而不只是顶点颜色的,所以应该工作。

所以,简单地说,如果你启用了照明,尽量GL_COLOR_MATERIAL。



Answer 3:

你可能想尝试的一件事是: glBindTexture(GL_TEXTURE_2D, 0); 结合纹理到零。



Answer 4:

有些事情要检查:

  • 是否有一个着色器活跃?
  • 任何GL-错误?
  • 你换什么其他国家? 例如GL_COLOR_MATERIAL,混合或照明将改变你的几何形状的外观。
  • 请问,如果你先画无纹理立方体工作? 如果确实如此揣摩此时它变为白色。 这也有可能是多维数据集将仅在第一帧正确的颜色显示出来,那么就肯定涉及到GL状态。
  • 配售glPushAttrib / glPopAttrib在您的绘图方法的开始/结束也许会有帮助,但最好要弄清楚什么摆在首位造成的问题。


文章来源: OpenGL - Unable to render colors other than white after texture mapping
标签: java opengl jogl