不使用libpng,较好解决OpenGL中使用png图标的方法
来源:互联网 发布:网络对小学生的利与弊 编辑:程序博客网 时间:2024/06/07 12:50
之前看到有使用第三方库libpng 解决openGL中使用png图标的文章。今天实现了使用QT+OpengL 实现了png图标的使用,没有使用libpng。
下面是代码,仅供参考:
void QglModel::LoadIcons(char * file,GLuint &texture_ID) {QImage t;QImage b;glEnable(GL_TEXTURE_2D);glAlphaFunc(GL_GREATER, 0.1f); //enables your application to set the alpha test function.glEnable(GL_ALPHA_TEST);b.load(file, "PNG");QImage fixedImage( b.width(), b.height(), QImage::Format_ARGB32);QPainter painter(&fixedImage);painter.setCompositionMode(QPainter::CompositionMode_Source);painter.fillRect(fixedImage.rect(), Qt::transparent); //use transparent fill image rectpainter.setCompositionMode(QPainter::CompositionMode_SourceOver);painter.drawImage( 0, 0, b);painter.end();t = QGLWidget::convertToGLFormat( fixedImage );glGenTextures(1, &texture_ID ); //name TexturesglBindTexture( GL_TEXTURE_2D, texture_ID ); //create Textures//zoomicon_size.setHeight( t.height() );//zoomicon_size.setWidth( t.width() );glTexImage2D( GL_TEXTURE_2D, 0, 4, t.width(), t.height(), 0, GL_RGBA, GL_UNSIGNED_BYTE, t.bits());//glTexImage2D( GL_TEXTURE_2D, 0, 4, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, t.bits());glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );glDisable(GL_ALPHA_TEST);glDisable(GL_TEXTURE_2D); }
void QglModel::DrawIcons(int x,int y,int pixwidth,GLuint &texture_ID){/*if (!zoomicon_loaded){ LoadIcons(file); zoomicon_loaded = true;}*///glViewport(x, y, zoomicon_size.width(), zoomicon_size.height());//glMatrixMode(GL_PROJECTION);//glLoadIdentity();glMatrixMode(GL_MODELVIEW);glBindTexture(GL_TEXTURE_2D, texture_ID);glEnable(GL_TEXTURE_2D);glBegin(GL_QUADS);glTexCoord2f(0.0f, 0.0f);glVertex2f(-pixwidth+x, -pixwidth+y);glTexCoord2f(1.0f, 0.0f);glVertex2f(pixwidth+x, -pixwidth+y);glTexCoord2f(1.0f, 1.0f);glVertex2f(pixwidth+x,pixwidth+y);glTexCoord2f(0.0f, 1.0f);glVertex2f(-pixwidth+x,pixwidth+y);glEnd();glDisable(GL_TEXTURE_2D); }
工程文件代码:
http://download.csdn.net/detail/lxnkobe/5025136
- 不使用libpng,较好解决OpenGL中使用png图标的方法
- OpenGL使用libPng读取png图片
- OpenGL使用libPng读取png图片
- 使用libpng读取png图像
- 使用libpng解码png图片
- 使用libpng显示png图片
- 使用libpng显示png图片
- zlib 与 libpng 的配置与使用 part 3 libpng的安装与生成PNG图片
- zlib 与 libpng 的配置与使用 part 3 libpng的安装与生成PNG图片
- zlib 与 libpng 的配置与使用 part 3 libpng的安装与生成PNG图片
- zlib 与 libpng 的配置与使用 part 3 libpng的安装与生成PNG图片
- zlib 与 libpng 的配置与使用 part 3 libpng的安装与生成PNG图片
- zlib 与 libpng 的配置与使用 part 3 libpng的安装与生成PNG图片
- zlib 与 libpng 的配置与使用 part 3 libpng的安装与生成PNG图片
- zlib 与 libpng 的配置与使用 part 3 libpng的安装与生成PNG图片
- zlib 与 libpng 的配置与使用 part 3 libpng的安装与生成PNG图片
- zlib 与 libpng 的配置与使用 part 3 libpng的安装与生成PNG图片
- zlib 与 libpng 的配置与使用 part 3 libpng的安装与生成PNG图片
- 值类型与引用类型的区别(基于C#)
- linux——system V 消息队列(实例)
- 静态成员函数与普通成员函数的区别
- 2012年软件设计师一道操作系统题
- 在centos6.2x64下基于pptp配置vpn server
- 不使用libpng,较好解决OpenGL中使用png图标的方法
- spoj 694 OR 705 不相同的子串的个数
- 在MFC中添加控件有两种方法CMonthCalCtrl
- 90后程序猿—实习生感悟
- eclipse安装svn插件与无法打开javascript问题
- C# 对Xml的常用操作
- Android开发——利用Cursor+CursorAdapter实现界面实时更新
- SQL Server 压缩日志文件.Log
- 线程局部变量封装类