问题标签 [qtopengl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1063 浏览

rotation - OpenGL - Qt:旋转和缩放转换不稳定

我已经实现了一个在 openGL 中翻译、旋转和 scle 二维纹理的程序。这 3 个转换单独工作得很好,但是当我把翻译和其他人一起扔时,事情就变得古怪了。

对于缩放,当比例高于 1.0 时,一切似乎都很好,但是一旦我低于,纹理就会离开屏幕。轮换的同样悲伤的故事。当角度很小,但超过20°或什么时,没有明显的问题,在两边,事情变得奇怪了。

这是我的代码。有趣的功能在最后。

这是我的顶点和片段着色器:

感谢您的回答。

0 投票
2 回答
5818 浏览

c++ - Qt OpenGL - 用鼠标拖动旋转

0 投票
1 回答
92 浏览

c++ - 在纹理上绘制的点没有得到所需的颜色

重要提示:我必须使用固定管道(我在这件事上没有发言权)。

我必须修改一些现有OpenGL代码(全景图片查看器,其中全景图被分成立方体的六个面),以便我们能够在加载的纹理顶部绘制线/点,其中点是鼠标坐标未投影到对象坐标。

我写了一个带有彩色立方体的测试程序,只是为了尝试在它上面画线:

测试程序

我通过将GL_DEPTH_BUFFER_BIT属性推送到堆栈的代码得到了这个,在绘制点之前禁用它,并在完成绘制后弹出堆栈属性。

我尝试在现有应用程序中使用相同的方法,但我得到了这些结果(在这里,我只是想画一个点):

指向纹理,1

点在纹理上,2

我将红色指定为该点的颜色,但如您所见,它没有所需的颜色。我认为这可能是由于混合,并且它可能将其颜色与底层纹理混合,因此我也将GL_BLEND属性推送到堆栈并在绘画之前将其禁用,但关键是无论如何都没有获得所需的颜色。

这里发生了什么?有没有办法“强制”管道将点涂成红色?

initCube() :这是在更新 GL 场景之前调用。

初始化GL():

油漆GL():

更新:我忘了提到代码基于Qt. 它QtOpenGL广泛使用该模块。

更新#2:我添加了一些代码。

0 投票
0 回答
1240 浏览

c++ - 多个顶点数组对象:显示多个图元的正确方法?

我很难让多个顶点数组对象渲染多个图元。我在网上找到的几乎所有 OpenGL 教程都只使用了一个 VAO,所以我不确定我可能做错了什么。

我正在使用 Qt-OpenGL 并尝试渲染一个正方形和一个立方体(在多个 VAO 上)。

使用下面的代码,我只会在屏幕上显示一个原语(以第二个初始化的为准)。当我关闭另一个原语的初始化时,我可以看到其中一个原语,但不能同时看到。

数据结构:

初始化:

渲染代码:

我已经尝试在渲染之前从缓冲区读取数据(它们是不同的,并且我对每个基元的期望),所以我知道写入正确发生。我现在猜想我可能绑定缓冲区错误,或者在渲染时错过了一步。

0 投票
1 回答
1418 浏览

c++ - QtOpenGl:没有这样的文件或目录

几天前我安装了 Deepin Linux。我正在尝试安装OpenCv2.4.10,但在编译期间出现此错误:

0 投票
1 回答
194 浏览

qt4 - 检索鼠标下的纹理坐标

我正在使用Qt 4.8它的OpenGL模块,使用固定的管道,并且我有一个立方体映射的球体,每个立方体面的 tex 坐标由OpenGLvia glTexGenf(R、S 和 T 坐标)自动生成。

在场景中单击时,我通过glReadPixels和检索鼠标光标下的顶点坐标gluUnProject

我现在正在寻找的是一种检索 texture coordinate与该位置相关联的方法。我没有找到有关此主题的任何内容,所以我想知道是否有办法实现这一目标。

0 投票
0 回答
812 浏览

qt - Qt MainWindow 中的 OpenSceneGraph 集成

我有以下代码,它是 OpenSceneGraph(https://github.com/openscenegraph/osg/blob/master/examples/osgviewerQt/osgviewerQt.cpp)给出的代码的修改,用于将 OSG 与 Qt 集成:

OSGViewer.h

OSGViewer.cpp

主窗口.h

主窗口.cpp

虽然我可以在我的 MainWindow 中使用两个不同的 QWidget 来渲染两个对象,但我总是在 MainWindow 后面弹出另外两个单独的空窗口。如果我关闭它们,那么我将无法在我的 MainWindow 中渲染我的模型。任何想法如何解决这个问题?我是 OpenSceneGraph 的新手。

0 投票
1 回答
2342 浏览

c++ - QOpenGLWidget的resizeGL不是调用glViewport的地方吗?

我正在试验新的 QOpenGLWidget 类(注意这不是QGLWidget 类)。

我正在画一个三角形。我有一个简单的顶点着色器,它接收剪辑空间中的坐标,因此不涉及矩阵或投影。其中一个顶点有坐标-1, -1, 0, 1,另一个有坐标1, 1, 0, 1

当我没有调用 glViewport 时,程序呈现为好像我在调用glViewport(0, 0, w, h); 我的resizeGL函数,但我不是。即,无论我如何调整窗口大小,三角形的两个顶点都附加到窗口的左下角和右上角。

当我在我的函数中实际添加一个调用时,它显然被忽略了——不管我传递 w/2、h/2 还是任何其他值,渲染与我调用时的渲染完全相同(对于例如,我希望三角形出现在窗口的左下角四分之一的情况下)glViewportresizeGLglViewport(0, 0, w, h);glViewport(0, 0, w/2, h/2);

当我调用函数glViewport(0, 0, width()/2, height()/2)paingGL,渲染如预期 - 一切都绘制在窗口的左下角。

所以看起来 glViewport 在resizeGL和之间的某个地方被覆盖了paintGL。发生了什么事,我该如何解决?我是否必须在我的paintGL函数中进行视口转换?

文档中列出的 QGLWidget 和 QOpenGLWidgets 之间的区别之一是后者渲染到帧缓冲区而不是直接渲染到屏幕。这能否成为解释的关键?

以防万一,我附上完整的代码以供参考。

//三角形.h

//三角形.cpp

//widget.h

//widget.cpp

//main.cpp

//顶点着色器

//片段着色器

0 投票
1 回答
112 浏览

c++ - 将 QT5 与 glLoadGen 一起使用

我正在用 C++ 在 Windows 8.1 上使用 Qt5.4 编写一个 3D 应用程序的接口。该应用程序正在使用 glLoadGen 加载 OpenGL 函数。

没问题,GlWidget 和 glLoadGen 都希望在包含 gl.h 之前被包含在内,而且在某些时候都包含 gl.h。所以看起来,编译一个同时使用两者的文件是不可能的。

使用一些包装器,我可能能够规避这个问题,但我宁愿不这样做。这个问题有什么干净的解决方案吗?

0 投票
1 回答
1406 浏览

opengl - Qt 5.5.1:找不到 -lGL

我在Qt 5.3.1. 我正在使用 Qt Creator3.1.2 (based on Qt 5.3.1)构建我的 GUI 应用程序,并且能够成功构建和部署我的应用程序。

我想更新我的 qt 创建器,为此我安装了最新的Qt Creator 3.5.1 (based on Qt 5.5.1)并提供了必要的更改,以便在这个最新的 qt 创建器上构建我现有的 QT GUI 应用程序。一切顺利,即将创建最终的可执行文件,构建被终止并显示以下错误信息:

我试图在网上搜索,发现这个建议更新 Mesa 包!。[如果是这样,为什么同一个应用程序在我的 Qt creator 3.1.2 上构建得很好。在尝试更新 mesa 包的修复程序之前,我想知道一些细节。]

有人可以为我提供一些解决此问题的指示吗?提前致谢。

编辑:当我在 Qt 5.3.1 上构建我的 GUI 应用程序时,以下库链接到我的最终可执行文件:

当我在 Qt 5.5.1 版本上构建相同的应用程序时,以下库链接到我的最终可执行文件:

我必须按照@Kyrylo Polezhaiev 的建议更新 mesa 包以解决 -lGL 的问题

我在这里遗漏了一块:-lGLESv2 -lEGL -lGAL旧 qt 版本(5.3.1)的 OpenGL 包是否等同-lGL于最新的 qt creator 5.5.1 版本?