这两天要做个分形的程序,用到IFS的算法,其中有个地方是这样的:不断的计算新的点,在屏幕上画出来,经过大量的迭代(大概几万次)之后,这些点渐渐形成一个图形。现在的问题是:用Opengl画,怎样才能保证当前画面不变,只在上面添上新的点呢?就是说形成一个渐变的效果?Opengl里需要设置什么模式吗?我的程序是win32的程序,参考的Nehe的教程的框架,初学opengl,各位大虾多多关照,感激不尽!!
调试欢乐多
方法二:去掉GL_COLOR_BUFFER_BIT ,即不清除已经画出来的东西
大概思想如下:
画图程序:glClear(GL_DEPTH_BUFFER_BIT) —> 画出当前点 -> 计算下一个点 -> 将这个点作为当前点
winmain中: 一直调用上面的画图程序,DrawGLScene(); SwapBuffers(hDC);单步跟进去,虽然每次都可以计算出新的点,但是都没有在图上显示。为什么呢?
方法二:你每次都在一个页面上画新的点,然后交换……当然就没有了。
方法三:其实这个应用只是画点而没有3D计算的话,用GDI足够了,用一个内存位图不停的往上画点->BitBlt,保证你效率。
e.g
...
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
...
loop
caculateVertex(currentVertex,newVertex);
//get the new data form currentVertex and stored in newVertex
drawVertex(newVertex);
updateCurrentVertex(newVertex);//currentVertex=newVertex
end loop
SwapBuffers();或者使用一些缓冲区屏蔽的技巧也可以