C opengl空心立方体带有可见边缘



我正在尝试创建一个立方体。我希望立方体本身清晰(黑色,因为背景是黑色),但是我希望这12条线薄而白。这样做的唯一方法是创建线条并将其放在边缘顶部?还是有其他方法可以接近它?

原因是我必须创建盒子内弹跳的球。

也许我应该只做glbegin(gl_lines),甚至不必担心表面会发生碰撞,因为我只能用数学上的数学创建?

我只是像这样创造了我的一方:

glBegin(GL_POLYGON);
glVertex3f( -0.5, -0.5,  0.5 );
glVertex3f( -0.5,  0.5,  0.5 );
glVertex3f( -0.5,  0.5, -0.5 );
glVertex3f( -0.5, -0.5, -0.5 );
glEnd();

您只需绘制'线框'立方体即可。您会看到边缘,但没有面孔。将填充模式设置为电线和渲染线而不是多边形。

glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);  // this tells it to only render lines
glBegin(GL_LINES);
// endpoints of 1 line/edge
glVertex3f( ... 
glVertex3f( ...
// endpoints of second line/edge
glVertex3f( 
glVertex3f( 
// on up thru all 12 lines/edges
glEnd();

现在,这不是最有效的。您可以使用线条条,或者仅绘制6个四边形。但是由于这是"第一天",所以这可能是一个容易的开始。

最终,您完全不使用固定功能 - 它已弃用。但这将为您带来一个使矩阵和照明等舒适的环境。当您有认真的宝石渲染时,您会将其放在缓冲区中,然后将其放到大块的GPU上,使您的GLSL着色器Process Process Process Process图形卡上的数据。

欢迎使用图形!

也许我应该做glbegin(gl_lines),甚至不用担心 表面要碰撞,因为我可以创建 数学上?

正确。您已经知道您的立方体的边界。

做一些线,然后弹跳你的球。

您可以将多边形模式(GlpolyGonmode,在此处读取)设置为GL_LINE,以实现同一件事。

也许我应该只做glbegin(gl_lines),甚至不必担心表面会发生碰撞,因为我只能用数学上的数学创建?

OpenGL不会帮助您进行任何形式的碰撞。

作为主题的某种篇章,请考虑使用更现代的方法。即使您不使用较新的OpenGL版本,也有效地删除了即时模式图。

这是一个不错的开始

最新更新