使多个形状以不同的位置、大小和颜色显示
Making more than one shape appear in different locations, sizes, and colours?
我正在编写一个游戏,我想让我使用 glVertex2d 绘制的形状以不同的位置、颜色和大小出现在屏幕上。我所需要的只是显示6艘宇宙飞船。我被告知要使用兰特,我搜索了它,但遗憾的是找不到任何东西。
#include "includefreeglut.h" // OpenGL toolkit - in the local shared folder
#include <iostream>
void spaceship(void);
int main(int argc, char** argv) {
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
glutInitWindowPosition(100, 100);
glutInitWindowSize(640, 400);
glutCreateWindow("Spaceship");
glutDisplayFunc(spaceship);
glutMainLoop();
}
void spaceship(void) {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glBegin(GL_TRIANGLES);
glVertex2f(-0.5, -0.5);
glVertex2f(0.5,-0.5);
glVertex2f(0.0,0.5);
glEnd();
glutSwapBuffers();
}
OpenGL是一个低级API,因此需要用户手动做很多事情。有诸如glScale, glTransform, glTranslate
之类的功能,但是这些功能会影响整个环境,因此需要放在glPushMatrix and glPopMatrix
之间。例如,如果我推送矩阵创建对象,然后仅弹出矩阵,则在这 2 个函数调用中创建的对象将受到影响。
glPushMatrix();
glScalef(2.0f, 2.0f, 0.0f);
glBegin(GL_QUADS);
glVectex(-1.0f, 1.0f);
glVectex(-1.0f, -1.0f);
glVectex(1.0f, -1.0f);
glVectex(1.0f, 1.0f);
glEnd();
glPopMatrix();
由于这种方法在现代OpenGL中已被弃用,因此许多人试图避免使用它,转而使用体力劳动。手动方法涉及线性代数,您可以在此处找到更多信息。
希望对您有所帮助。
相关文章:
- 无法在 Opencv 中显示图像导致内存位置
- Visual Studio 中的"指向引用的指针"错误不会按发生位置的文件名显示
- 如何使用 FMOD 和 C++ 显示当前音乐位置
- 使多个形状以不同的位置、大小和颜色显示
- C 如何使我的程序显示值而不是内存位置
- Visual studio显示SEH异常的错误位置
- MFC 打开文件位置并选择(突出显示)该文件
- 使用 GLUT 在 3D OpenGL 世界中显示固定位置的 2D 文本
- 如何使用 FTGL 显示文本固定位置 2d
- Qt QDialog每次关闭并再次显示时都会稍微移动位置
- 在 MFC CScrollView 中的固定位置显示子窗口
- 突出显示qtextedit中x和y作为位置的单词
- C++显示include搜索文件的位置
- 带有static_assert的C++模板在错误的位置显示编译错误
- Doxygen-如何显示使用类的所有位置
- 为什么位置交换的数量显示为零
- 在中心位置渲染模型不显示(已修改)
- c ++如何在向量中的特定位置显示元素的字符串属性
- PageHeap 不显示确切的崩溃位置
- 以编程方式在正确位置显示主音量控制滑块(sndvol.exe)