我想用OpenGl功能在C++中绘制一个坚实的立方体,但是我想将它绘制在期望的位置,例如glVertex3f(20,5,-35)
。我如何在给定的位置绘制一个立方体?C++中的OpenGl实体立方体
-4
A
回答
2
glTranslatef(x,y,z)。谷歌它,我认为也有2D版本。但是这会将参考帧转换为堆栈。如果需要设置更复杂的转换,则需要调用glpopmatrix和glpushmatrix。小心拼写和使用这些。
2
要匹配你的问题,并在OpenGL(兼容性配置文件),你可以使用此代码来绘制一个立方体:
void drawCube(float x, float y, float z)
{
glBegin(GL_QUADS);
glVertex3f(-1.0f+x, -1.0f+y, -1.0f+z);
glVertex3f(1.0f+x, -1.0f+y, -1.0f+z);
glVertex3f(1.0f+x, 1.0f+y, -1.0f+z);
glVertex3f(-1.0f+x, 1.0f+y, -1.0f+z);
glVertex3f(-1.0f+x, -1.0f+y, -1.0f+z);
glVertex3f(-1.0f+x, -1.0f+y, 1.0f+z);
glVertex3f(-1.0f+x, 1.0f+y, -1.0f+z);
glVertex3f(-1.0f+x, 1.0f+y, 1.0f+z);
glVertex3f(-1.0f+x, -1.0f+y, -1.0f+z);
glVertex3f(-1.0f+x, -1.0f+y, 1.0f+z);
glVertex3f(1.0f+x, -1.0f+y, 1.0f+z);
glVertex3f(1.0f+x, -1.0f+y, -1.0f+z);
glVertex3f(-1.0f+x, -1.0f+y, 1.0f+z);
glVertex3f(1.0f+x, -1.0f+y, 1.0f+z);
glVertex3f(1.0f+x, 1.0f+y, 1.0f+z);
glVertex3f(-1.0f+x, 1.0f+y, 1.0f+z);
glVertex3f(-1.0f+x, -1.0f+y, 1.0f+z);
glVertex3f(1.0f+x, -1.0f+y, 1.0f+z);
glVertex3f(1.0f+x, 1.0f+y, 1.0f+z);
glVertex3f(-1.0f+x, 1.0f+y, 1.0f+z);
glVertex3f(-1.0f+x, 1.0f+y, -1.0f+z);
glVertex3f(-1.0f+x, 1.0f+y, 1.0f+z);
glVertex3f(1.0f+x, 1.0f+y, 1.0f+z);
glVertex3f(1.0f+x, 1.0f+y, -1.0f+z);
glEnd();
}
我不推荐这个功能,使用替代glTranslatef(x, y, z)
解决discribed在另一个答案。喜欢这个功能:
void drawCube(float x, float y, float z)
{
glPushMatrix();
glTranslatef(x, y, z);
glBegin(GL_QUADS);
glVertex3f(-1.0f,-1.0f ,-1.0f);
glVertex3f(1.0f, -1.0f, -1.0f);
glVertex3f(1.0f, 1.0f, -1.0f);
glVertex3f(-1.0f, 1.0f, -1.0f);
glVertex3f(-1.0f, -1.0f, -1.0f);
glVertex3f(-1.0f, -1.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, -1.0f);
glVertex3f(-1.0f, 1.0f, 1.0f);
glVertex3f(-1.0f, -1.0f, -1.0f);
glVertex3f(-1.0f, -1.0f, 1.0f);
glVertex3f(1.0f, -1.0f, 1.0f);
glVertex3f(1.0f, -1.0f, -1.0f);
glVertex3f(-1.0f, -1.0f, 1.0f);
glVertex3f(1.0f, -1.0f, 1.0f);
glVertex3f(1.0f, 1.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, 1.0f);
glVertex3f(-1.0f,-1.0f ,1.0f);
glVertex3f(1.0f, -1.0f, 1.0f);
glVertex3f(1.0f, 1.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, 1.0f);
glVertex3f(-1.0f, 1.0f, -1.0f);
glVertex3f(-1.0f, 1.0f, 1.0f);
glVertex3f(1.0f, 1.0f, 1.0f);
glVertex3f(1.0f, 1.0f, -1.0f);
glEnd();
glPopMatrix();
}
这个功能还不够完美,但它应该足够了。快乐的编码!
+1
我建议尽可能使用过剩。它们具有可以轻松制作实心立方体或线立方体的功能。 glutSolidCobe(glDouble size); – pippin1289
相关问题
- 1. C++/OpenGL - 绘制立方体VBO
- 2. C++ OpenGL空立方体可见边
- 3. 立方体旋转 - OpenGL
- 4. Opengl透明立方体面
- 5. 在c中实现数据立方体#
- 6. Opengl基本立方体绘图,但立方体绘制单色
- 7. SSAS:来自多个立方体实例的中央立方体
- 8. 如何在OpenGL中绘制立方体?
- 9. 在OpenGL中渲染一个立方体
- 10. Android OpenGL ES在x,y,z点和立方体的中心旋转立方体
- 11. 的Android/openGL的立方体GL_TRIANGLE_FAN
- 12. 将立方体转换为openGL中的球体表面
- 13. 跟踪3D立方体位置的OpenGL?
- 14. 渲染立方体尽快? (OpenGL的)
- 15. 使用for循环的OpenGL立方体
- 16. iPhone的OpenGL:构形立方体问题
- 17. 的OpenGL ES:在立方体上
- 18. 立方体上的OpenGL 3D纹理
- 19. OpenGL绘制多个等角立方体
- 20. 不能在立方体内绘制 - OpenGL
- 21. OpenGL Java 3D立方体旋转
- 22. OPENGL ES 2立方体纹理
- 23. 使用Opengl绘制立方体3D
- 24. OpenGL:渲染大量立方体
- 25. OpenGL - 纹理基本立方体
- 26. 旋转立方体(使用opengl - iphone)
- 27. 立方体合并事实
- 28. 在opengl中绘制体素(立方体)的最有效方法是什么?
- 29. 分层窗口中的OpenGL立体声
- 30. 在OpenGL中创建立方体的方法
1.你有什么试过的? (告诉我们代码!) 2.您在哪里遇到问题? – tzaman
添加到什么tzaman说:http://mattgemmell.com/2008/12/08/what-have-you-tried/ – Samveen