问题标签 [opengl-4]
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.
ruby - 如何在 Ruby 中创建 OpenGL 3.x 或 4.x 上下文?
我到处找,但没有红宝石绑定允许创建 OpenGL 3/4 上下文。
它不必是完整的 OpenGL 绑定库,只是创建 OpenGL 上下文的部分。
更新:如果我足够绝望,我会用 ruby ffi 进行部分 glfw ruby 绑定。所以请救我;)
c++ - 学习现代 OpenGL
我知道过去几年也有类似的问题,但是在做了一些研究之后,我仍然无法决定从哪里学习以及应该学习什么。我还想看看您当前对现代 OpenGL 编程的实际看法,以及更多的 C++ OOP 和着色器方法。并确保我对某些事情的实际理解是有效的。
所以...目前我们有 OpenGL 4.2,正如我在某处读到的那样,它需要 dx11 硬件(这是什么意思?)和一组“侧面”库,例如创建窗口。
有最常见的 GLUT,我非常讨厌。主要原因之一是函数调用,它不允许我们在创建主循环的方式上自由。正如一些人所说,它不是为了游戏而设计的。
还有 GLFW,它实际上对我来说非常好和直截了当。出于某种原因,人们将它与 GLUT 一起使用。(它不仅提供窗口初始化,还提供其他实用程序?)
还有 SFML 和 SDL ( SDL < SFML imo ),而它们有时都需要奇怪的方法来使用 OGL,而且在某些情况下并不是很快。
我们还有 GLEW,它是扩展加载实用程序...等等...不是 GLUT/GLFW 已经是扩展了吗?有什么理由使用它,比如有什么真正重要的扩展可以引起兴趣吗?
到目前为止,我们已经创建了窗口(和一些实用程序),但是...... OGL 不负责加载纹理,也不负责加载 3D 模型。我还需要多少其他库?
现在让我们提到教育部分。有(在)著名的 NeHe 教程。使用 WinApi 用 C 语言编写,代码非常不清晰,解决方案过时,但仍然是最受欢迎的。可以找到一些像红皮书这样的东西,它们与 2.x 或 3.x 等版本相关,但是只有很少的(和未完成的)教程提到 4.x。
带什么去?
c++ - Opengl:使用单通道纹理作为 Alpha 通道来显示文本
我想要做的是将纹理从单通道数据数组加载到硬件中,并使用它的 alpha 通道将文本绘制到对象上。我正在使用opengl 4。
如果我尝试使用 4 通道 RGBA 纹理执行此操作,它工作得非常好,但无论出于何种原因,当我尝试加载单个通道时,我只会得到一个乱码,我不知道为什么。我通过将一系列字形的纹理位图数据与以下代码组合成一个纹理来创建纹理:
然后我加载纹理数据调用:
我的片段着色器执行以下代码:
我得到一张我可以说是从纹理生成的图像,但它非常扭曲,我不确定为什么。顺便说一句,我正在使用 GL_RED,因为 GL_ALPHA 已从 Opengl 4 中删除。真正让我困惑的是,为什么当我从字形生成 4 RGBA 纹理然后使用它的 alpha 通道时它可以正常工作?
opengl - (OpenGL 3.1 - 4.2) 对象占据了所有的屏幕空间
据我所知,自 3.1 以来,关于 OpenGL 的一切都发生了变化,现在我不知道如何重新调整渲染上下文的大小。
有没有可以解决这个问题的设置?或者我是否必须将数学纳入着色器本身。
opengl - (OpenGL 3.1 - 4.2) 动态统一数组?
假设我有 2 个物种,例如人类和小马。它们具有不同的骨骼系统,因此每个物种的统一骨骼阵列必须不同。我是否必须实现两个能够正确渲染每个骨骼数组的单独着色器程序,或者是否有办法动态声明统一数组并迭代该动态数组?
牢记性能(所有的着色器在决策分支上都很糟糕)。
math - 模型空间中的光照计算
我有一个每个片段照明的工作,但我想知道如何在模型空间中保持照明计算,我不必在片段着色器中将法线乘以 normalModelMatrix,如下所示。
着色器:ViewMatrix - 相机变换,ModelMatrix - 对象变换。灯光位置 - glm::vec4 lightPos(3.0f, 2.0f, -30.0f, 1.0f)
渲染循环:
顶点着色器:
片段着色器:
math - per fragment lighting and window to camera transforms
我使用窗口到相机转换实现了每个片段的照明和光衰减:
然后我使用 lightPos 和 cameraPos 来计算光照。lightPos 在世界空间中有一个固定的位置。我有 ViewMatrix 来处理 fps 风格的相机和 ModelMatrix。早些时候我使用顶点位置而不是窗口到相机的变换,一切都很好。现在,当我使用相机在物体周围移动时,我得到了不正确的照明。在上传到片段着色器之前,lightPos 乘以 ViewMatrix。
我不知道我做错了什么。
mesa - OpenGL 4.2 标头、Mesa 3D、扩展 - 它是如何组合在一起的?
现在,我很难找到有关 OpenGL 标头和扩展以及如何访问最新功能的信息。OpenGL.org 没有涉及任何这些,Mesa(2006 年更新!)或任何人都没有——但我想我不是唯一一个想要理解这一点的人。
我正在使用 Nvidia 驱动程序在 Archlinux 上开发 - 支持 4.2 - 这显然不附带 OpenGL 头文件(无论如何都不是存储库的头文件)。这就是问题和混乱开始的地方。我读到我应该使用 Mesa3D 标头——目前支持 OpenGL 3.0。这是我现在安装的。
现在,我在某处读到核心 OpenGL 4.2 头文件 - gl.h - 仅公开了 OpenGL 1.2 的功能。其余部分(最高 4.2)可通过扩展加载获得——这意味着即使我针对 4.2 进行开发,这些 3.0 标头也可以——我将加载所有 4.2 核心功能作为扩展。
我在其他地方读到 gl.h 标头确实暴露了 4.2 和 3.0 之间的不同功能 - 我无法验证任何东西,因为我发现了很多过时的文章并且没有可靠的信息。
有人能解释一下这一切是如何结合在一起的吗?
opengl - glsl 双精度顶点缓冲区
如果我创建一个双精度顶点缓冲区,例如:
如何访问顶点着色器中的双精度数据?我应该能够做到这一点吗?
opengl - GLSL顶点着色器中的眼睛空间像素宽度
我想在 glsl 顶点着色器中的当前顶点位置计算像素投影金字塔的眼睛空间宽度,但我似乎无法正确计算。这是一个明显不正确的例子:
但这并没有考虑 FOV 或剪裁平面。