91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

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

評論

共有 條評論