我想在opengl中製作一個太空入侵者遊戲。所以我想用三角形來創造敵人。在製作遊戲之前,我想用動畫試試我的手。我有三角形。我想用動畫將它左移到某個點上(也就是說,三角形在一定的時間間隔後被翻譯出來,它應該看起來好像正在移動)。在到達左邊的某個點之後,我想要將它翻譯回原來的位置位置或一些距離。這個過程應該繼續直到屏幕打開。我使用了睡眠功能。但它不起作用。沒有顯示動畫。只有翻譯後的三角形繪製在不同的翻譯位置。幫我。用opengl和C++使用動畫(間隔一段時間後)逐個翻譯一個三角形
這裏是我的代碼 -
#include "windows.h"
#include <gl/glut.h>
#include<stdio.h>
void init(void)
{
printf("OpenGL version: %s\n", (char*)glGetString(GL_VERSION));
printf("OpenGL renderer: %s\n", (char*)glGetString(GL_RENDERER));
//Configure basic OpenGL settings
glClearColor(1.0, 1.0, 0.0, 0.0);
glMatrixMode(GL_PROJECTION);
gluOrtho2D(0.0,640.0,0.0,480.0);
glColor3f(1.0,0.0,0.0);
glPointSize(3);
}
void house(int x, int y,int z)
{
glPushMatrix();
glTranslatef(x, y,z);
glBegin (GL_LINES);
glVertex2i (0,30);
glVertex2i (15,60);
glVertex2i (15,60);
glVertex2i (30,30);
glVertex2i (30,30);
glVertex2i (0,30);
glEnd();
//Sleep(200);
glPopMatrix();
//glutSwapBuffers();
}
// Main drawing routine. Called repeatedly by GLUT's main loop
void display(void)
{
//Clear the screen and set our initial view matrix
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
int i;
for(i = 10; i < 350; i = i + 50)
{
house(i,20,0);
Sleep(200);
}
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glFlush();
}
// Entry point - GLUT setup and initialization
int main(int argc, char** argv)
{
glutInit(&argc, argv);
glutInitDisplayMode (GLUT_DEPTH | GLUT_SINGLE| GLUT_RGB);
glutInitWindowSize (800, 600);
glutInitWindowPosition (100, 100);
glutCreateWindow("OpenGL Test");
glutDisplayFunc(display);
init();
glutMainLoop();
return 0;
}
你可以請我提供一些算法或代碼來做到這一點?這也是一個三角形。我將如何翻譯三角形的數組? – user3757558 2014-08-28 19:17:17
謝謝....我會看到它。如果我有一個三角形的瓷磚,即排列成瓷磚的三角形(使用視口和世界窗口),那麼我將如何移動這些瓷磚左和寫太空入侵者的敵人一樣寫。你能給我一些提示嗎? – user3757558 2014-08-29 02:42:53