600高分求助,用OpenGL作的多文档源程序,要求有旋转位图功能,并且读取的位图贴在视图中,小弟我很久都没解决这个问题,高人请进
解决方案 »
- VC在EXCEL中画出的图形如何组合一起
- MFC中CStatic控件动态改变
- 关于Hook 到Word函数的问题.有点难度,请救急,PM在催了!!! 请蒋晟不吝赐教!!
- 请问MediaPlayer 控件如何获取视频帧数据缓存区?
- 鏁戝懡鍛€锛屽湪Dll涓皟鐢↖DispEventSimpleImpl澶辫触
- 编译出错,郁闷,各位帮忙!等待.....
- 高分请教利用fax modem发传真的例子
- 请问如何让控件随对话框的大小改变而改变啊?在线~~~~~~~~~~~~~
- 请教COM/ATL高手!!!!(急)
- 怎样在运行时改变控件的颜色
- 如何得到CListCtrl中指定行的属性
- 关于添加Splash工程的问题?
AUX_RGBImageRec * LoadBMP(LPCTSTR Filename);
GLfloat xrot,yrot,zrot;//x,y,z轴的旋转角度
GLuint texture[1];//用于存储纹理AUX_RGBImageRec * LoadBMP(LPCTSTR Filename)
{
FILE *File=NULL;
if (!Filename)
{
return NULL;
}
File = fopen(Filename,"r");
if(File)
{
fclose(File);
return auxDIBImageLoad(Filename);
}
return NULL;
}int LoadGLTextures()
{ int status = FALSE;
AUX_RGBImageRec *TextureImage[1];
memset(TextureImage,0,sizeof(void *)*1);
CString str ;//bitmap file name
if (TextureImage[0]=LoadBMP(str))
{
status = TRUE;
glGenTextures(1, &texture[0]);
glBindTexture(GL_TEXTURE_2D, texture[0]);
glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[0]->sizeX,
TextureImage[0]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); // 线形滤波
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); // 线形滤波
}
if (TextureImage[0]) // 纹理是否存在
{
if (TextureImage[0]->data) // 纹理图像是否存在
{
free(TextureImage[0]->data); // 释放纹理图像占用的内存
}
free(TextureImage[0]); // 释放图像结构
}
return status;
}
void OnDraw()
{
glLoadIdentity();
glTranslatef(0.0f,0.0f,z_depth);
glRotatef(xrot,1.0f,0.0f,0.0f); // 绕X轴旋转
glRotatef(yrot,0.0f,1.0f,0.0f); // 绕Y轴旋转
glRotatef(zrot,0.0f,0.0f,1.0f); // 绕Z轴旋转
draw_frame();
GLfloat coor = 0.0;
glBindTexture(GL_TEXTURE_2D, texture[0]);
glBegin(GL_QUADS);
// 前面
glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 0.5f); // 纹理和四边形的左下
glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 0.5f); // 纹理和四边形的右下
glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 0.5f); // 纹理和四边形的右上
glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 0.5f); // 纹理和四边形的左上
glEnd();
}
若要旋转你必须在别处修改x,y,z轴的旋转变量.
虽然OpenGL提供了丰富的图形程序设计函数,可是掌握它并不是很容易,尤其是OpenGL并不是针对Windows的,因此无论什么时候需要创建一个新的OpenGL程序,你都必须在缓冲区创建一个基本的OpenGL视类,你需要考虑一个又一个细节,如初始化PIXELFORMATDESCRIPTOR结构\设置像素结构\和创建图形操作描述表等等。
http://www.vckbase.com/document/viewdoc.asp?id=462