【问题标题】:lwjgl colors all items on screenlwjgl 为屏幕上的所有项目着色
【发布时间】:2012-11-10 17:50:38
【问题描述】:

我有几个四边形已成功显示在屏幕上,但是当我尝试设置其中一个的颜色时,它会设置所有四边形的颜色。

GL11.glColor3f(red,green,blue);


    xh = getXsize() / 2;
    yh = getYsize() / 2;
    GL11.glPushMatrix();
    GL11.glTranslated(x, y, 0);
    GL11.glTranslatef(10.0f, 10.5f, -0.0f); 
    GL11.glRotated(rotate, 0.0f, 0.0f, -1.0f); 
    GL11.glTranslatef(-10.0f, -10.5f, 0.0f);
    GL11.glTranslated(-x, -y, 0);
    GL11.glBegin(GL11.GL_QUADS);
    GL11.glVertex2d(x - xh, y - yh);
    GL11.glVertex2d(x - xh, y + yh);
    GL11.glVertex2d(x + xh, y + yh);
    GL11.glVertex2d(x + xh, y - yh);
    GL11.glEnd();
    GL11.glPopMatrix();

【问题讨论】:

  • 您能否提供您在 GL11.glColor3f(red, green, blue); 中用于红色、绿色、蓝色的值?了解您正在渲染的上下文也很有帮助 - 例如:这段代码是否在循环中调用,您之前使用过 GL11.glClear() 吗?
  • 蓝色等于0,红色和绿色在整个程序过程中不断变化,它们分别从0-1和1-0变化。程序处于循环中,我使用 glClear(GL_COLOR_BUFFER_BIT);在循环的开头。

标签: java colors lwjgl


【解决方案1】:

据我所知,您发布的代码中只绘制了一个四边形。无论如何,当您调用GL11.glColor3f(red,green,blue) 时,它将应用于您在调用它之后绘制的所有后续四边形。基本上,如果你想要不同颜色的四边形,你需要在每次绘制新的四边形之前调用具有不同值的函数。

您应该在名为 Specifying a Color and a Shading Model 的部分中查看 this 资源(不是 JWJGL,而是 OpenGL)的以下内容,它更好地解释了颜色是如何形成的应用于简单的形状。

【讨论】:

    猜你喜欢
    • 2015-08-30
    • 2017-02-17
    • 1970-01-01
    • 2014-01-24
    • 1970-01-01
    • 2012-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多