|
|
我看了一篇文章介绍了单幅图像的滚动的实现方法,就是在纹理坐标的某个分量上加变量roll ,部分代码如下:
glPixelStorei (GL_UNPACK_ALIGNMENT,1) ;
glTexEnvf ( GL_TEXTURE _ENV , GL_TEXTURE_ ENV_MODE , GL_MODULATE) ;
glTexParameteri ( GL_TEXTURE_2D , GL_TEXTURE_MIN_FILTER , GL_ LINEAR) ;
glTexParameteri(GL_ TEXTURE_ 2D , GL _TEXTURE_ MAG_FILTER , GL_ LINEAR) ;
glTexParameteri (GL_ TEXTURE _2D , GL _TEXTURE_ WRAPS , GL_ REPEAT) ;
glTexParameteri (GL _TEXTURE _2D , GL _TEXTURE _WRAP_T, GL _REPEAT) ;
glTexImage2D(GL_TEXTURE_2D ,0 ,3 ,nWidth ,nHeight ,0 ,GL_BGR_EXT,GL_UNSIGNED_ BYTE ,pBytes) ; / / 定义二维纹理映射
glBegin(GL QUADS) ; / / 绘制纹理四边形
glTexCoord2f ( - roll + 0. 0f , - roll + 0. 0f) ; glVertex3f ( - 1. 1f ,- 1. 1f , 0. 0f) ; / / 左下角
glTexCoord2f ( - roll + 3. 0f , - roll + 0. 0f) ; glVertex3f ( 1. 1f , -1. 1f , 0. 0f) ; / / 右下角
glTexCoord2f ( - roll + 3. 0f , - roll + 3. 0f) ; glVertex3f ( 1. 1f , 1.1f , 0. 0f) ; / / 右上角
glTexCoord2f ( - roll + 0. 0f , - roll + 3. 0f) ; glVertex3f ( - 1. 1f ,1. 1f , 0. 0f) ; / / 左上角
glEnd() ;
roll + = 0. 002f ; / / 增加roll 变量
if (roll > 1. 0f) { roll - = 1. 0f ; } / / roll 是否超过1. 0 , 超过1. 0 ,则减1. 0
. . .
绘制动画要响应WM TIMER 消息,并设置SetTimer () 函数。
可是我不知道怎么设置这个函数啊:(请高手给予指导
谢谢
[em1] |
|