我正在编写一个游戏,我希望使用glVertex2d绘制的形状在屏幕上以不同的位置,颜色和大小。我只需要显示6个宇宙飞船。我被告知要使用rand我搜索了它,但遗憾地找不到任何东西。
#include "include\freeglut.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();
}
答案 0 :(得分:0)
OpenGL是一种低级API,因此需要用户手动完成。
有glScale, glTransform, glTranslate
等函数,但这些函数会影响整个环境,因此需要放在glPushMatrix and glPopMatrix
之间。例如,如果我推动矩阵创建对象然后只弹出矩阵,那么在这两个函数调用中创建的对象将受到影响。
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中不推荐使用这种方法,所以很多人都试图避免使用它来支持手工劳动。手动方法涉及线性代数,您可以找到更多here。
希望它有用。