我正在尝试创建一个多维数据集。我希望立方体本身是清晰的(黑色,因为背景是黑色的),但我希望12条线条变得薄而白。是唯一的方法来创建线条并将它们放在边缘的顶部?或者有不同的方法来处理它?</ p>
原因是我必须在盒子里面制作球。
也许我应该做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();
答案 0 :(得分:6)
您只需绘制'线框'立方体即可。您将看到边缘但没有面孔。将填充模式设置为连线和渲染线而不是多边形。
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着色器处理显卡上的数据。
欢迎来到图片!
答案 1 :(得分:1)
也许我应该做glBegin(GL_LINES),甚至不用担心 表面碰撞,因为我可以创建它 数学上?
正确。您已经知道了多维数据集的边界。
做一些线,然后反弹你的球。
答案 2 :(得分:0)
您可以将多边形模式(glPolygonMode,此处读取)设置为GL_LINE以实现相同的功能。
也许我应该做glBegin(GL_LINES),甚至不担心表面会碰撞,因为我可以用数学方法创建它?
OpenGL不会帮助您解决任何类型的冲突。
作为一个有点偏离主题的说明,请考虑使用更现代的方法。即使您没有使用较新的OpenGL版本,也会立即弃用立即模式绘图。
This是一个不错的起点