我需要在一个长条上画红色和黄色的三角形,每个三角形应该有不同的颜色。这是我目前为止的代码:
Position drawPos = begPos.copy().offsetX(A);
gl.glBegin(GL.GL_TRIANGLE_STRIP);
gl.glColor3f(1.0f, 0.0f, 0.0f); // red
gl.glVertex3f(drawPos.getX(), drawPos.getY(), 0f);
drawPos.offsetX(-A);
gl.glVertex3f(drawPos.getX(), drawPos.getY(), 0f);
drawPos.offset2DAngle(-60f, A);
gl.glVertex3f(drawPos.getX(), drawPos.getY(), 0f);
gl.glColor3f(1.0f, 1.0f, 0.0f); // yellow
drawPos.offsetX(-A);
gl.glVertex3f(drawPos.getX(), drawPos.getY(), 0f);
gl.glColor3f(1.0f, 0.0f, 0.0f); // red
drawPos.offset2DAngle(-60f, A);
gl.glVertex3f(drawPos.getX(), drawPos.getY(), 0f);
gl.glColor3f(1.0f, 1.0f, 0.0f); // yellow
drawPos.offsetX(-A);
gl.glVertex3f(drawPos.getX(), drawPos.getY(), 0f);
gl.glEnd();
我期待看到两个黄色和两个红色的三角形与尖锐的边缘,没有梯度,但我得到这个
我试过gl.glDisable(GL2.GL_COLOR_MATERIAL);
和gl.glPolygonMode(GL.GL_FRONT_AND_BACK, GL2.GL_FILL);
,甚至
gl.glEnable(GL.GL_LINE_SMOOTH);
gl.glEnable(GL.GL_BLEND);
gl.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE_MINUS_SRC_ALPHA);
但这一切对我都不起作用
编辑:Position class i只是我在绘图方法中减少和简化代码的一个小东西
1条答案
按热度按时间k2fxgqgv1#
在三角形条带中,2个三角形的2个顶点总是共享的(参见三角形图元)。因此,分配给这些顶点的颜色也是共享的。一个顶点不能有2个不同的颜色属性。绘制2个
GL_TRIANGLES
而不是一个GL_TRIANGLE_STRIP
,或者将着色模型更改为平面着色: