我正在开发一个OpenGL项目,我想在其中绘制一个星星。它不一定是3D外观星(2d看起来很好)。我有明星中心的xyz坐标,我知道我希望它的大小。我没有做太多的OpenGL / 3d数学编程,所以非常感谢这里的任何帮助。
编辑:更多细节:我不确定这是否可行,但是我可以在3d空间的某个点绘制2D外观星吗?我尝试了一个简单的方块并尝试了类似的东西:
gl.glTranslated(x, y, z);
gl.glBegin(GL.GL_QUADS);
gl.glVertex2D(x-size,y-size);
gl.glVertex2D(x-size,y+size);
gl.glVertex2D(x+size,y+size);
gl.glVertex2D(x+size,y-size);
gl.glEnd();
即使我翻译成x,y,z,广场似乎也没有达到正确的深度。它看起来比应该更接近屏幕的正面。是否可以像这样翻译3d中的2d形状?
感谢,
杰夫
答案 0 :(得分:3)
您是否设置了projection matrix?如果不是,则可能设置为identity,这意味着顶点的z值对屏幕空间中的渲染位置没有影响。为了获得您想要的深度感,您需要创建透视投影矩阵。您可以使用glFrustum()来创建投影矩阵。这是一个例子(来自Wikipedia's OpenGL page):
glMatrixMode( GL_PROJECTION ); /* Subsequent matrix commands will affect the projection matrix */
glLoadIdentity(); /* Initialise the projection matrix to identity */
glFrustum( -1, 1, -1, 1, 1, 1000 ); /* Apply a perspective-projection matrix */
网上有大量免费的OpenGL教程,因此您不必在寻找更多信息方面遇到任何麻烦。
答案 1 :(得分:0)
我决定使用3D绘图,看起来翻译实际上已经为我完成了,我不需要重新翻译。所以实际上我正在翻译。感谢大家的帮助。