资源简介
Qt5.7+VS2015 64位的环境,使用Qt的QOpenglWidget,来显示一张图片,采用GLSL。学习入门挺适合的。在网上找了很久资源,还是自己折腾搞定,特地分享出来。
代码片段和文件信息
#include “cameraglwidget.h“
#include
#include
#include
#include
struct VertexData
{
QVector2D position;
QVector2D texCoord;
};
CameraGLWidget::CameraGLWidget(QWidget *parent)
: QOpenGLWidget(parent)
{
}
CameraGLWidget::~CameraGLWidget()
{
arrayBuf.destroy();
}
void CameraGLWidget::resizeGL(int w int h)
{
glViewport(00wh);
}
void CameraGLWidget::paintGL()
{
// Clear color and depth buffer
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
m_texture->bind();
// Use texture unit 0 which contains cube.png
m_program->setUniformValue(m_textureUniform 0);
// Draw cube geometry using indices from VBO 1
glDrawArrays(GL_TRIANGLE_STRIP 0 4);
}
void CameraGLWidget::initializeGL()
{
initializeOpenGLFunctions();
initShaders();
initTextures();
initBuffArray();
}
void CameraGLWidget::initShaders()
{
//Create QOpenGLShaderProgram
m_program = new QOpenGLShaderProgram;
// Compile vertex shader
m_program->addShaderFromSourceFile(QOpenGLShader::Vertex“GLSL/vshader.glsl“);
// Compile fragment shader
m_program->addShaderFromSourceFile(QOpenGLShader::Fragment“GLSL/fshader.glsl“);
// link shader pipeline
m_program->link();
// Bind shader pipeline for use
m_program->bind();
//Get identifer of Attribute or uniform value in vshader.glsl and fshader.glsl
m_vertexAttr = m_program->attributeLocation(“vertexIn“);
m_textureAttr = m_program->attributeLocation(“textureIn“);
m_textureUniform = m_program->uniformLocation(“texture“);
}
void CameraGLWidget::initTextures()
{
// Load image
m_texture = new QOpenGLTexture(QImage(“./S40_duplicate.png“).mirrored());
// Set nearest filtering mode for texture minification
m_texture->setMinificationFilter(QOpenGLTexture::Nearest);
// Set bilinear filtering mode for texture magnification
m_texture->setMagnificationFilter(QOpenGLTexture::Linear);
// Wrap texture coordinates by repeating
// f.ex. texture coordinate (1.1 1.2) is same as (0.1 0.2)
m_texture->setWrapMode(QOpenGLTexture::Repeat);
}
void CameraGLWidget:: initBuffArray()
{
// Vertex data and texture data
VertexData vertices[] = {
{QVector2D(-1.0f -1.0f) QVector2D(0.0f 0.0f)} // v0
{QVector2D( 1.0f -1.0f) QVector2D(1.0f 0.0f)} // v1
{QVector2D(-1.0f 1.0f) QVector2D(0.0f 1.0f)} //v2
{QVector2D( 1.0f 1.0f) QVector2D(1.0f 1.0f)} // v3
};
arrayBuf.create();
arrayBuf.bind();
arrayBuf.allocate(vertices 4 * sizeof(VertexData));
// Offset for position
quintptr offset = 0;
// Tell OpenGL programmable pipeline how to locate vertex position data
m_program->enableAttributeArray(m_vertexAttr);
m_program->setAttributeBuffer(m_vertex
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2017-12-05 10:45 OpenglWdtTest\
目录 0 2017-12-05 10:17 OpenglWdtTest\GLSL\
文件 242 2017-12-05 10:07 OpenglWdtTest\GLSL\fshader.glsl
文件 268 2017-12-05 10:17 OpenglWdtTest\GLSL\vshader.glsl
文件 26338 2017-12-05 10:37 OpenglWdtTest\Makefile
文件 33310 2017-12-05 10:37 OpenglWdtTest\Makefile.Debug
文件 33254 2017-12-05 10:37 OpenglWdtTest\Makefile.Release
文件 449 2017-12-05 10:37 OpenglWdtTest\OpenglWdtTest.pro
文件 23794 2017-12-05 10:45 OpenglWdtTest\OpenglWdtTest.pro.user
文件 46636 2017-11-21 10:42 OpenglWdtTest\S40_duplicate.png
文件 3392 2017-12-05 10:37 OpenglWdtTest\cameraglwidget.cpp
文件 854 2017-12-05 10:35 OpenglWdtTest\cameraglwidget.h
目录 0 2017-12-05 10:45 OpenglWdtTest\debug\
文件 66048 2017-12-05 10:37 OpenglWdtTest\debug\OpenglWdtTest.exe
文件 3100672 2017-12-05 10:37 OpenglWdtTest\debug\OpenglWdtTest.pdb
文件 190545 2017-12-05 10:35 OpenglWdtTest\debug\mainwindow.obj
文件 2715 2017-12-05 10:35 OpenglWdtTest\debug\moc_mainwindow.cpp
文件 116381 2017-12-05 10:35 OpenglWdtTest\debug\moc_mainwindow.obj
文件 339 2017-12-04 15:01 OpenglWdtTest\main.cpp
目录 0 2017-12-05 10:46 OpenglWdtTest\release\
文件 640066 2017-11-20 11:30 OpenglWdtTest\test.jpg
文件 2192 2017-12-04 16:06 OpenglWdtTest\ui_mainwindow.h
相关资源
- Cross-Platform GUI Programming with wxWidgets 无
- QT5.9.0实现的QWidget版富文本编辑器
- QTableWidget表头添加复选框实现全选功
- wxWidgets中文教程
- 需要:libQt5WebKitWidgets.so.5()(64bi
- wxWidgets 最经典学习资料
- Unity好用的UI插件 New UI Widgets1.9.3,2
- Qt自定义按钮
- QTreeWidget,项可拖动、可编辑,创建、
-
Qt读写xm
l文件,QTreeWidget显示xm l和 -
QTreeWidget,读写xm
l功能、可拖动、编 - Qt嵌入式虚拟键盘
- Unity UGUI UI工具集:New UI Widgets
- 桌面widget备忘录
-
Qt以tableWidget/tableView读取xm
l文件,并 - 编译好的VTK8.0,包括QVTKWidgetPlugin.dl
- 使用wxWidgets进行跨平台开发
- 编译好的VTK8.0,包含QVTKWidgetPlugin.dl
- qt简单仿mstsc连接远程桌面源码使用
- QAxWidget打开Office文件及pdf
-
VideoPla
yer.zip - Qt+Pcl可视化点云.rar
- wxFormBuilder3.9.0
- 基于MappWidget的自定义景区地图的开发
- VTK8.0 and VTK8.1
- QT Tabwidget 冻结表头和冻结列
- 《桌面widget详解四——桌面音乐播放
- VTK-8.0.1编译后,可直接放到pcl-1.8.1下
- 仿谷歌浏览器的TabWidget
- Qt 缩略图列表显示图片
评论
共有 条评论