资源描述:
《程序设计OpenGL中不用AUX库来加载BMP图片》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、程序设计OpenGL中不用AUX库来加载BMP图片作为纹理作者:吴旭发表于2010-6-25113530评论(0)阅读(177)大家在OpenGL中一般是用aux库的auxDIBImageLoad()函数来加载BMP格式的图片来作为纹理,这个确实是比较简单易用,但aux库的性能不佳,经常会出问题,稳定性较差。所以一般最好不耍用8UX库,可以用glut库,但glut库没有纹理加载函数。而有些程序是直接读取BMP格式来获得图像数据,从而生成纹理的,这种方法虽然很强大,但比较复杂,需要了解BMP的格式,对初学者比较困难。而下面的一段程序是用w
2、indows的API函数Loadimage()来实现这个功能,这种实现方法很简单,町以说比auxDIBImageLoad()函数复杂不了多少。首先,加上头文件:#inelude这是因为后面的GL.BGR.EXT是定义在这个头文件里的,因为BMP格式是按Blue,Green,Red顺序储存图像数据的,这与OpenGL中正好相反。GL_BGR_EXT就是完成两者之间的转换的。下面就是不用AUX库来加载BMP图片作为纹理的函数:boolLoadTexture(LPTSTRszFileName,GLuint&texid)CreatesTextu
3、reFromABitmapFile{HBITMAPhBMP;HandleOfTheBitmapBITMAPBMP;BitmapStructureglGenTextures(l,&texid):CreateTheTexturehBMP二(HBITMAP)Loadimage(GetModuleHandle(NULL),szFileName,IMAGE_BITMAP,0,0,LR_CREATEDIBSECTIONLR_LOADFROMFILE);if(!hBMP)DoesTheBitmapExistreturnFALSE;IfNotRetur
4、nFalseGetObject(hBMP,sizeof(BMP),&BMP);GetTheObjecthBMPHandleToGraphicsObjectsizeof(BMP)SizeOfBufferForObjectInformation&BMPBufferForObjectInformationglPixelStorei(GL_UNPACK_ALIGNMENT,4);PixelStorageMode(WordAlignment4Bytes)TypicalTextureGenerationUsingDataFromTheBitmapg
5、lBindTexture(GL_TEXTURE_2D,texid);BindToTheTextureIDglTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR):LinearMinF订terglTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GLLINEAR);LinearMag□IterglTexImage2D(GLTEXTURE_2D,0,3,BMP.bmWidth,BMP.bmHeight,0,GL_BGR_EX
6、T,GL_UNSIGNED_BYTE,BMP.bmBits);DeleteObject(hBMP);DeleteTheObjectreturnTRUE;LoadingWasSuccessful简单吧,以后就用这个函数來加载BMP图片作为纹理吧,很方便的!xT%xlxxlxsixsixsixsixsixsixsixsXxsixopengl使用3dmax建模后怎样把模型导入//////////importmodel.h/////////////////////////////////////////////#include#
7、includettinclude//HeaderFileForWindowsftinclude//HeaderFileForStandardInput/Outputttinclude//HeaderFileForTheGLu32Libraryftinclude//HeaderFileForTheGlauxLibraryttinclude<
8、math・h>//基本块(PrimaryChunk),位于文件的开始ftdefinePRIMARY0x4D4D//主块(MainChunks)ttdefineOBJECTINFO0x3D3D//网格对象的版