我有一个方法drawTriangle
,它在JAVA中的OpenGL程序的display()
方法中引用。
public void drawTriangle(GL gl, int x1, int y1, int x2, int y2, int x3, int y3){
gl.glVertex2d(x1, y1);
gl.glVertex2d(x2, y2);
gl.glVertex2d(x3, y3);
}
然后我在Display()
public void display(GLAutoDrawable drawable){
GL gl = drawable.getGL();
gl.glClear(GL.GL_COLOR_BUFFER_BIT);
gl.glColor3f(0.4f, 1.0f, 0.4f);
gl.glBegin(GL.GL_TRIANGLES);
gl.glPushMatrix();
drawTriangle(gl,0,0,0,20,100,10);
gl.glTranslatef(0f, 0f, 0f);
gl.glRotatef(90f, 0f, 0f, 1f);
gl.glPopMatrix();
}
然后画出一个可爱的红色三角形。
我无法改变三角形的位置或旋转。
它只是在这里产生:
答案 0 :(得分:1)
您在渲染后应用转换。这不起作用!
即:
public void display(GLAutoDrawable drawable)
{
GL gl = drawable.getGL();
gl.glClear(GL.GL_COLOR_BUFFER_BIT);
gl.glPushMatrix();
gl.glTranslatef(0f, 0f, 0f);
gl.glRotatef(90f, 0f, 0f, 1f);
gl.glBegin(GL.GL_TRIANGLES);
gl.glColor3f(0.4f, 1.0f, 0.4f);
drawTriangle(gl,0,0,0,20,100,10);
gl.glEnd();
gl.glPopMatrix();
}
答案 1 :(得分:1)
代码存在一些问题。首先,gl.glBegin(...)
后面应跟gl.glEnd()
。保持绘图功能,例如drawTriangle(...)
在这两个中,以及任何矩阵操作。
public void display(GLAutoDrawable drawable)
{
GL gl = drawable.getGL();
gl.glClear(GL.GL_COLOR_BUFFER_BIT);
gl.glColor3f(0.4f, 1.0f, 0.4f);
gl.glPushMatrix();
gl.glTranslatef(0f, 0f, 0f);
gl.glRotatef(90f, 0f, 0f, 1f);
gl.glBegin(GL.GL_TRIANGLES);
drawTriangle(gl,0,0,0,20,100,10);
gl.glEnd();
gl.glPopMatrix();
}
答案 2 :(得分:1)
我的示例旋转四边形,我假设您可以修改它以旋转三角形: https://gist.github.com/gouessej/3420e2b6f632efdddf98
引用了on Wikipedia和the JogAmp wiki。下次提高你的Yacy / DuckDuckGo / IxQuick / Seeks技能;)