1

我正在开发一个 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 形状?

谢谢,

杰夫

4

2 回答 2

3

您是否设置了投影矩阵?如果不是,它可能设置为标识,这意味着顶点的 z 值不会影响它们在屏幕空间中的渲染位置。为了获得你想要的深度感,你需要创建一个透视投影矩阵。您可以使用 glFrustum() 创建投影矩阵。这是一个示例(来自维基百科的 OpenGL 页面):

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 教程,因此您可以轻松找到更多信息。

于 2009-12-09T23:12:00.760 回答
0

我决定使用 3d 绘图,看起来翻译实际上已经为我完成了,我不需要重新翻译。所以实际上我的翻译偏离了重点。感谢大家的帮助。

于 2009-12-10T15:16:02.420 回答