OpenGl Solid Cube in C++
OpenGl Solid Cube in C++
我正在尝试使用 OpenGl 功能在C++中绘制一个实体立方体,但我想在所需的位置(例如 glVertex3f(20,5,-35)
(绘制它。如何在给定位置绘制实体立方体?
glTranslatef(x, y, z(.谷歌一下,我认为也有2D版本。但这会将参考系从堆栈中转换出来。如果需要设置更复杂的转换,则需要调用 glpopmatrix 和 glpushmatrix。小心拼写和用法。
要匹配您的问题并在 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)
解决方案。像这个函数:
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();
}
这个功能远非完美,但应该足够了。祝您编码愉快!
相关文章:
- netcat command in c++
- Difference in displaying cv2 Mat
- C++ MFC Libraries in Travis CI
- 如何在OpenSSL中从configuration.h.in获取configuration.h
- 创建具有 new in 函数和"this is nullptr"异常的对象
- IN, OUT, INOUT Parameters
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- 有人安装"IITB Simplecpp in mac"吗?
- 从 C 样式字符串中删除子字符串 "in place" 在C++代码中
- 如何修复"error: ‘_1’ was not declared in this scope"?
- Softmax Implementation in C++
- 将 out/in out 参数与 if/switch 的 init 语句一起使用
- IF-nesting in c++
- Gurobi GRBModel and GRBmodel in C++
- Tensorflow Hub in C++
- Centos7 g++ "to_string is not in a member of std"
- InitializeCriticalSectionEx Not Located In KERNEL32.Dll
- 将 lambda 表达式传递给 std::function in C++
- @CPPFLAGS@在 Makefile.in 中意味着什么?
- std::async from std::async in windows xp