Qt实现读取显示obj文件——创建并绑定纹理
来源:互联网 发布:爱另类软件 编辑:程序博客网 时间:2024/05/21 09:54
之前在读取数据的时候,Qt实现读取显示obj文件——读取数据,已经读取纹理,也就是png格式的文件到model的集合中去了,我们需要根据图片创建我们的纹理:
for (int i = 0; i < model->list_ImagePath.length(); i++) { glEnable(GL_TEXTURE_2D); GLint MaxTextureSize; glGetIntegerv(GL_MAX_TEXTURE_SIZE, &MaxTextureSize); QImage img, imgScaled, imgGL; QFileInfo fi(model->list_ImagePath[i]); QString imagePath = fi.absoluteFilePath(); imagePath = imagePath.trimmed(); bool res = img.load(imagePath); if (res) { int bestW = RoundUpToTheNextHighestPowerOf2(img.width());//计算最接近宽度的2的幂,如1024 int bestH = RoundUpToTheNextHighestPowerOf2(img.height()); while (bestW > MaxTextureSize) bestW /= 2; while (bestH > MaxTextureSize) bestH /= 2; imgScaled = img.scaled(bestW, bestH, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); imgGL = convertToGLFormat(imgScaled);//该方法是QGLWidget插件独有的方法,所以该方法是在你的QGLWidget中实现的 glPixelStorei(GL_UNPACK_ALIGNMENT, 1); glGenTextures(1, (GLuint*)&(model->textureArray[i]));//创建 glBindTexture(GL_TEXTURE_2D, (GLuint)model->textureArray[i]);//绑定 glTexImage2D(GL_TEXTURE_2D, 0, 3, imgGL.width(), imgGL.height(), 0, GL_RGBA, GL_UNSIGNED_BYTE, imgGL.bits()); gluBuild2DMipmaps(GL_TEXTURE_2D, 3, imgGL.width(), imgGL.height(), GL_RGBA, GL_UNSIGNED_BYTE, imgGL.bits()); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); } glDisable(GL_TEXTURE_2D); }
这里glGenTextures方法会自动从1开始生成纹理的名称,因为默认是一个纹理,所以使用的是数组的元素,如果你同时需要多个纹理对应一个面,那么传入数组即可~
在绑定后,我们在之后的刷新显示界面的时候将启动指定名称的纹理并将纹理坐标绘制进去即可!~
0 0
- Qt实现读取显示obj文件——创建并绑定纹理
- Qt实现读取显示obj文件——动态绑定纹理与消除纹理
- Qt实现读取显示obj文件——多线程加载纹理
- Qt实现读取显示obj文件——读取数据
- Qt实现读取显示obj文件——说明
- Qt实现读取显示obj文件——归一化坐标
- Qt实现读取显示obj文件——绘制数据
- Qt实现读取显示obj文件——计算面的单位法向量
- Qt读取文件并显示
- 读取并显示 obj (2)
- 用GLM来读取显示有纹理的OBJ
- 打开文件(读取文件),并实现显示
- 孙其功陪你学之——OpenGL加载OBJ模型文件并进行纹理修饰
- 3D模型(obj文件)加载及纹理显示
- ___16__C#IO创建Text文件并读取显示
- vtk实战(十二)——读取.obj文件
- OpenGL之C++实现读取txt文件并显示
- Abaqus obj inp 文件内部读取点坐标并统计
- RAM or ROM
- Android技术网站
- 深度学习 10. cifar-10 介绍
- 调试和开发MTK源码
- odoo——Building Interface Extensions
- Qt实现读取显示obj文件——创建并绑定纹理
- android图片涂鸦——旋转与文字功能的实现原理
- java中可变对象与不可变对象
- TreeSet方法之一 当向TreeSet中添加Person对象 续 当有多个属性值时的自然排序
- which -find
- sigmoid和softmax函数的C++实现
- python 实现简单监控 windows版
- 设散列函数为H(k)=K MOD 13,给定的键值序列为13,41,15,44,06,68,12,25,38,64,19,49
- ProgressBar 进度条