您好,我从OpenGL
使用C#
,Tao.Framework
和开始Tao.Plataform.Windows SimpleOpenGlControl
,到目前为止,我使用了以下代码段:
// in Form.Load handler
Gl.glOrtho(0, 10, 0, 10, -1, 1);
Gl.glClearColor(0f, 0f, 0f, 0f);
Gl.glClear(Gl.GL_COLOR_BUFFER_BIT);
Gl.glBegin(Gl.GL_POLYGON);
Gl.glVertex2f(0f, 0f);
Gl.glVertex2f(0f, 1f);
Gl.glVertex2f(1f, 1f);
Gl.glVertex2f(1f, 0f);
Gl.glEnd();
到现在为止还挺好。现在我正在尝试添加一些动画效果。我试图像一个在我的客户区域四肢弹跳的球一样移动正方形。我的代码是这样的:
Gl.glOrtho(0, 10, 0, 10, -1, 1);
new Thread(() =>
{
int x = 3, incX = 1;
int y = 7, incY = 1;
while (true)
{
Gl.glClearColor(0f, 0f, 0f, 0f);
Gl.glClear(Gl.GL_COLOR_BUFFER_BIT);
Gl.glBegin(Gl.GL_POLYGON);
Gl.glVertex2f(x + 0f, y + 0f);
Gl.glVertex2f(x + 0f, y + 1f);
Gl.glVertex2f(x + 1f, y + 1f);
Gl.glVertex2f(x + 1f, y + 0f);
Gl.glEnd();
simpleOpenGlControl1.SwapBuffers();
if (x == 0 || x == 9) incX *= -1;
if (y == 0 || y == 9) incY *= -1;
x += incX;
y += incY;
Thread.Sleep(1000);
}
}).Start();
但是有一点很不对劲。我的图片不断在两个特定帧之间切换。我打印了两个框架。看看这个:
http://www.jonataspiazzi.xpg.com.br/outpost/example_frame.png
还有以下细节。尽管上面的第一帧是正确的,但它没有显示任何变化,我的意思是正方形不会移动。
我该如何解决?或者如何构建一个简单的动画?