QOpenGL开发入门教程06:平移

系列教程索引:QOpenGL开发入门教程索引

OpenGL默认界面中心点为坐标原点,并自动填充至整个界面,但是我们往往只需要某个元素位于某一小个位置。

本文介绍如何在Qt中将移动元素位置。

三角形

先是渲染语言部分

1
2
3
4
5
6
7
8
9
10
const char* vsrc="#version 330 core\n"
"in vec3 pos;\n"
"uniform mat4 mvpMatrix;\n"
"void main(){\n"
" gl_Position=mvpMatrix * vec4(pos,1.0);\n"
"}";

const char* fsrc="void main(){\n"
" gl_FragColor=vec4(1.0f,1.0f,1.0f,1.0f);\n"
"}";

绘制图像时进行移动图像

1
2
3
4
5
6
7
8
program->bind();
vao.bind();
m_modelView.setToIdentity();
m_modelView.translate(-1.5f,0.0f,-6.0f);
program->setUniformValue("mvpMatrix",m_projection*m_modelView);
glDrawArrays(GL_TRIANGLES,0,3);
vao.release();
program->release();

使用一个矩阵进行操作。

设置矩阵m_modelView的移动数值后,需要计算新的位置m_projection*m_modelView,之后将计算的结果赋值给渲染语言的输入mvpMatrix。

效果为:

translate

可以看到三角形位置是移动了,但是变小了。而三角形顶点数值的值没变,是因为translate的z值为-6.0f,离窗口更远了。

四边形

四边形移动效果

translate

合并

elements

完整代码在OpenGL_Beginner中的QOpenGL下的6.translate。


QOpenGL开发入门教程06:平移
https://feater.top/qt/translate-qopengl-elements
作者
JackeyLea
发布于
2020年11月18日
许可协议