opengl 带JOGL的多色三角条

cwxwcias  于 2022-12-18  发布在  其他
关注(0)|答案(1)|浏览(112)

我需要在一个长条上画红色和黄色的三角形,每个三角形应该有不同的颜色。这是我目前为止的代码:

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只是我在绘图方法中减少和简化代码的一个小东西

k2fxgqgv

k2fxgqgv1#

在三角形条带中,2个三角形的2个顶点总是共享的(参见三角形图元)。因此,分配给这些顶点的颜色也是共享的。一个顶点不能有2个不同的颜色属性。绘制2个GL_TRIANGLES而不是一个GL_TRIANGLE_STRIP,或者将着色模型更改为平面着色:

gl.glShadeModel(GL.GL_FLAT);

相关问题