- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我终于尝试使用 tutorial 围绕着色器进行思考我发现。我决定从 Qt5 (Windows) 开始,因为我熟悉它并且可以专注于学习 GLSL 本身。我正在做的事情和教程之间的唯一区别是我正在使用 QOpenGLWidget
而不是 QOpenGLWindow
(我只有一个带有一个小部件的表单,没什么特别的)。
为了开始使用片段着色器,我在 Qt 中向我的项目添加了一个新的桌面(不是 ES)片段着色器,Qt 生成了以下着色器:
uniform sampler2D qt_Texture0;
varying vec4 qt_TexCoord0;
void main(void)
{
gl_FragColor = texture2D(qt_Texture0, qt_TexCoord0.st);
}
但是,当编译这个着色器时,它会产生这个错误:
QOpenGLShader::compile(Fragment): ERROR: 0:2: '' : No precision specified for (float)
我四处搜索了一下,找到了 this answer其中指出:
No default precision exists for fp types in fragment shaders in OpenGL ES 2.0.
据此,我的结论是我的应用程序使用的是 OpenGL ES 而不是 Desktop(否则它不会期望定义精度)。
我看到的 GL 版本字符串是 OpenGL ES 2.0 (ANGLE 2.1.0.8613f4946861)。 Fwiw,在同一台机器上的 Qt4 中,版本字符串是 3.0.0 - Build 9.17.10.4229。
假设我的结论是正确的,我的问题是:如何配置应用程序以使用常规 OpenGL 而不是 OpenGL ES?
评论中关于将表面格式的可渲染类型设置为 OpenGL
的建议似乎很有希望,但它并不奏效。例如,如果我在小部件的构造函数中更改它:
View::View (QWidget *parent) :
QOpenGLWidget(parent),
...
{
QSurfaceFormat f = format();
qDebug() << "type was" << f.renderableType();
f.setRenderableType(QSurfaceFormat::OpenGL);
qDebug() << "type set to" << f.renderableType();
setFormat(f);
qDebug() << "type is now" << format().renderableType();
}
void View::initializeGL () {
qDebug() << __FUNCTION__ << "type is now" << this->format().renderableType();
...
}
问题仍然存在,输出为(0 = 默认,1 = OpenGL
,2 = OpenGLES
):
type was 0
type set to 1
type is now 1
initializeGL type is now 2
所以它似乎在构造函数和 initializeGL
之间的某个时刻被强制返回到 OpenGLES
。
在构造任何 GUI 对象之前(以及构造 QApplication
之前)设置默认表面格式时,我也观察到了类似的行为。
最佳答案
如果视频卡被列入黑名单(在编译 Qt 时在 ANGLE 配置中)或视频驱动程序不支持现代 OpenGL(即,如果你只有 Microsoft 提供的库存驱动程序)。
您可以强制应用程序使用 OpenGL 而不是角度,方法是添加:
QCoreApplication::setAttribute(Qt::AA_UseDesktopOpenGL);
在您的 main.cpp 文件中或通过将环境变量 QT_OPENGL 设置为“桌面”(不带引号)。您可以在此处找到更多详细信息:http://doc.qt.io/qt-5/windows-requirements.html
关于c++ - 为 Qt5 指定 OpenGL Desktop 而不是 ES,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55399801/
我的网站有两个版本。桌面版和移动版。 当用户通过智能手机访问我的网站时,我将其指向“移动版本”->“m.mywebsite.com”。 为此,我使用了名为 Mobile Detect 的项目 到目前为
在java中,我尝试使用Desktop.getDesktop().open(File file)打开一个文件,但它抛出IOException,尽管Desktop.getDesktop().isSupp
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
JetBrains Compose for Desktop 中有没有办法更改标题栏背景颜色或仅将其更改为深色模式?我使用的是 MacOS,因此该栏可以是浅色或深色。也可以让标题栏本身不可见(但保留关闭
Tableau 架构显示 Desktop 连接到 Tableau Server(使用网关),然后连接到 Tableau Server 上的数据服务器。我的问题是 tableau 客户端必须与 tabl
我在 Flutter 桌面上工作了一段时间,并且实现过程中一切顺利。到目前为止,我只实现了 UI、网络和内存缓存。现在我开始面临一个真正的问题,我无法找到解决方案。是否有一些开箱即用的可能性将文件保存
有没有办法将 Github Desktop 中的文件更改列表显示为树而不是平面文件列表? 最佳答案 似乎该功能存在于桌面版 Git 的 v1 中,并在应用程序的 v2 中被删除。 2018 年有帖子要
有谁知道在移动浏览器中选择桌面 View 选项会如何影响 CSS 媒体查询和 Javascript? 我正在制作一个仅供移动用户使用的网站。当我在使用普通 Android 浏览器时选择“桌面 View
/usr/share/applications 中的.desktop 文件、xdg-desktop-menu 命令和update-desktop-database 命令之间有什么关系? 我正在尝试创建
当项目属于我的帐户(或我的组织之一)时,Github Desktop 让我可以轻松地从 Github 克隆项目。 我有什么办法可以使用 Github Desktop 克隆属于其他人的公共(public
我不想被 Selenium RC 启动的浏览器打扰。有什么方法可以强制它在另一个 X11 桌面上运行浏览器吗?在另一个桌面上运行 Selenuim 服务器并不能解决问题。 Vít Šesták 'v6
因此,我正在构建的 C 程序必须放置在我的 MAC 计算机 (OS X 10.9.4) 桌面上的 PA_mobile 文件中,以便它可以访问脚本和文本文件缓存与之相关。 现在,当我的程序启动时,它会验
为了在 Windows 平台上运行 Flutter,我使用 go-flutter-desktop 来实现。 我需要在单击按钮时打开 Excel 文件。 经过长时间的努力,我想分享这个片段 最佳答案 i
背景 我正在使用 Citrix Workspace(版本 20.2.0.25(2002))中的 Desktop Viewer 功能从我的家用计算机访问我的工作计算机。 请求 我希望能够更轻松地将我的(
我通过 NetBeans8.0 使用 Oracle JDK 1.8.0_05 在 Ubuntu 12.04 LTS 64 位(带有 Gnome Shell)上运行一些 Java 代码。 以下函数在 M
/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/Scre
嗨,我有一个 Linux 实例,我正在使用桌面类。代码: String path = request.getParameter("path"); try {
当我选择在桌面应用程序中显示检查器时,出现以下错误。 正如他们的 Wiki 所说,我遵循了这个: http://wiki.appcelerator.org/display/guides/Enablin
我在 OSX、Objective-C 上。 我有一个像 这样的路径/NSURL /Users/xxx/Desktop/image2.png 但我将它传递给第三方应用程序,该应用程序会像 excpect
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它. 4年前关闭。 Improve this
我是一名优秀的程序员,十分优秀!