【发布时间】:2013-12-22 04:48:20
【问题描述】:
我正在尝试在 OpenGL 2.1 中使用 GLU 和 GLUT 基元(例如 gluCylinder、glutSolidCylinder 等)绘制类似的东西。
基本上它是一个中间有孔的实心圆柱体。到目前为止,我无法实现它。 我还尝试将波前 obj 从 Blender 导入到我的 C++ 程序中,但我得到的是这个。
glBegin(GL_TRIANGLES);
for(int i = 0; i < wheel->faces.size(); i++) {
int nx = atoi(wheel->faces.at(i).at(0).substr(wheel->faces.at(i).at(0).find_last_of('/') + 1).c_str()) - 1;
int ny = atoi(wheel->faces.at(i).at(1).substr(wheel->faces.at(i).at(1).find_last_of('/') + 1).c_str()) - 1;
int nz = atoi(wheel->faces.at(i).at(2).substr(wheel->faces.at(i).at(2).find_last_of('/') + 1).c_str()) - 1;
int vx = atoi(wheel->faces.at(i).at(0).substr(0, wheel->faces.at(i).at(0).find_first_of('/')).c_str()) - 1;
int vy = atoi(wheel->faces.at(i).at(1).substr(0, wheel->faces.at(i).at(1).find_first_of('/')).c_str()) - 1;
int vz = atoi(wheel->faces.at(i).at(2).substr(0, wheel->faces.at(i).at(2).find_first_of('/')).c_str()) - 1;
glNormal3f(wheel->normals.at(nx).x, wheel->normals.at(ny).y, wheel->normals.at(nz).z);
glVertex3f(wheel->vertices.at(vx).x, wheel->vertices.at(vy).y, wheel->vertices.at(vz).z);
}
glEnd();
解析应该是正确的,我逐行仔细检查。我想这是我尝试绘制它的错误方式。
但是我不想使用 obj,因为我的绘图方式会使动画变慢(我对 OpenGL 还很陌生)。而且我也不想使用 OpenGL 3+。
有什么建议吗?
【问题讨论】:
-
如果您重视自己的理智,请在绘图循环中摆脱
atoi。转换应该在加载阶段进行一次,而不是在每次绘制时进行。 -
当然。这只是为了测试。
-
@keltar 我什至会从
[]开始而不是at()。