问题标签 [opengl-3]
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.
c++ - 带有纹理的卡通着色器
我正在尝试在opengl 3+上使用C++实现一个带有纹理的卡通着色器,但一周后我只得到了一个没有纹理的卡通着色器。
顶点文件:
片段文件:
谁能帮我让这个着色器处理纹理?
谢谢
c++ - 了解用于在 OpenGL 3.3+ 核心中使用三角形绘制四边形的代码
我正在尝试使用 OpenGL 3.x+ 为背景(2D)绘制一个四边形。不推荐使用四边形,因此目标是使用两个三角形来制作一个填充屏幕的矩形。它正在工作,但我对这里的所有内容都不是 100% 清楚。
设置
- 我理解
vertexPositions
,它是一个顶点数组。 glGenBuffers()
是说,我想要 1 个缓冲区并将 id 分配给&positionBufferObject
?glBufferData()
上传vertexPositions
到 GPU 的内存;但是由于我没有给它一个ID,它怎么知道要上传它?
- 我理解
画
glEnableVertexAttribArray()
只是说我要用数组 0 绘图?glDrawArrays()
- 如果我想绘制两个顶点数组怎么办?它如何知道要渲染哪些?它从上面的命令中知道吗?- 不知道做什么
glVertexAttribPointer()
? glDrawArrays()
清楚了。
清理一下,我觉得这样对吗?
我只进行一次设置/清理。
奖励积分:
- 这是呈现这个的最有效方法吗?我读到我假设要提交并“批量”渲染[?],因为 3.x+ 不再执行即时模式。也只有一个数组,所以在这种情况下,批次对性能没有帮助,但是如果我说要绘制“非常大量”的 vertxArrays,它会是相同的过程吗?
- 在设置中,他们将数组 id 存储为 positionBufferObject,但在渲染循环中对其进行了硬编码。似乎在十几个数组之后会变得混乱,为什么使用变量而不是硬编码它不是一个好习惯?
c++ - 了解顶点数组对象 (glGenVertexArrays)
我对生成/创建顶点数组对象(VAO)的观点感到困惑:
和
因为我仍然可以创建一个缓冲区对象,比如顶点,并在创建glVertexAttribPointer
和glEnableVertexAttribArray
不创建 VAO 的情况下描述该缓冲区对象。
我的问题是,如果您不必实际创建 VAO 来描述缓冲区对象中的数据,为什么像 OpenGL SuperBible 5ed 这样的源会在创建 VBO 时包含创建 VAO 的调用?它们是否仅用于我尚未发现的更高级的主题,我是否完全糊涂了?
此外,我在阅读关于 VBO 的维基百科条目时第一次遇到这个问题,他们的示例代码不包括对的调用,glGenVertexArrays()
但他们仍然用glVertexAttribPointer()
. Wiki VBO 条目——
出于什么原因创建 VAO 的示例?
opengl-3 - 如何启动 GL_Painter
我希望任何人都可以帮助我开始在OpenGl中做这个程序编写一个OpenGL程序(交互式程序),通过单击起点然后在显示窗口绘图区域上拖动来绘制线条。给用户一个菜单,供他选择。该菜单包含以下选项: 1- 清除显示窗口。2- 选择至少包括颜色(红色、绿色、蓝色、黑色)的线条绘制颜色。3- 选择包括(破折号、点、点划线、实线)的线条图案。4- 选择线条粗细。(线宽从 1 到 4)。5- 退出程序。
opengl - glDrawElements 和平面着色
使用 glDrawElements 绘制对象时,是否可以在 OpenGL 中实现平面着色,如果可以,如何实现?如果可能的话,理想的方法是只为每个三角形计算一次法线。
该解决方案只能使用可编程流水线(核心配置文件)。
opengl - 使用 glDrawArrays 绘制 VBO 在 OpenGL 2.1 中有效,但在 OpenGL 3.x 中无效
代码核心(显示红色矩形):
当我将上下文切换到 OpenGL 3.x 时,此代码停止工作(我只能看到背景颜色),但是当我以与上面代码相同的方式初始化 VAO 然后我绑定 VAO 并调用 glDrawArrays 时,然后它工作。
可能是什么问题呢?如何在不使用 VAO 的情况下绘制 VBO?
(着色器非常简单,与仅乘矩阵和 ps 输出红色相比)
c++ - OGL ESv2 中的相同游戏不适用于 OGL3
我编写了一个能够使用 OpenGL ESv2 或 OpenGL 3 Core Profile API 进行绘图的引擎。但是最近 OpenGL 3 部分坏了,我不记得我改变了什么,也不能查看 svn commitlog,因为我确实将它托管在 bountysource 现在已经关闭,我把它带到了谷歌(但 OGL3 端口坏了)。
使用 OpenGL ESv2 一切正常,但使用 OpenGL 3 一切都被水平拉伸和镜像。两者甚至使用相同的矩阵和顶点。
不要混淆。OpenGL ESv2 和 OpenGL 3 渲染器使用不同的方式来渲染它。
OpenGL ESv2 使用 VBO。OpenGL 3 使用 VAO 和 VBO。
我的引擎是开源的,所以,你可以在这里查看它:源代码。
这些应该是重要的部分:Sprite Class,Base Window Class,GL3 Window Class,GL ESv2 Window Class
着色器:
以下是一些示例图片:
如果有人能给我解决这个问题,我会非常非常高兴和感激,也许我会为此给予一点奖励。
编辑:使用 480x800 窗口,gldebugger 显示此矩阵:
modviewmat
{1, -0, 0, 0}
{0, 1, 0, 0}
{0, 0, 1, 0}
{5, 770, 0, 1}
项目
{2, 0, 0, 0}
{0, 2, 0, 0}
{0, 0, -1, 0}
{-1, -1, -0, 1}
vbo - OpenGL 3.0:由 VBO 引起的访问冲突异常
我正在更新一个相当过时的 OpenGL 项目。所以我试图从顶点数组移动到 VBO,但是我有一个无法跟踪的访问冲突异常。
所以我正在使用我在类构造函数中生成的 VBO 和 IBO:
(glewInit() 已经被调用)
各种渲染对象定义为:
然后在我的绘图功能中我做:
对 glVertexPointer 的旧式调用一切正常……但现在我的程序因访问冲突异常而崩溃。知道这可能来自哪里吗?
谢谢
c++ - 完全支持OpenGL3的GUI-Toolkit
我需要一个正确支持 OpenGL3 并允许创建前向兼容配置文件的 GUI-Toolkit。
通常我使用 wxWidgets。但是当我尝试在 wxWindow 或 wxPanel 上创建我在引擎中使用的上下文时,GetDC() 失败,因为 Window 缺少 CS_OWNDC。我真的不想学习 QT,但从我的第一眼看它也不支持它。
那么,我怎样才能在 wxWindow 上创建合适的 Canvas 或 Toolkit 支持我的需求呢?感谢您的任何意见。
opengl - opengl - 点精灵渲染问题
我正在尝试渲染点精灵,但我得到了分数。问题出在哪里 ?(通过 glUniform3f 改变颜色有效)
顶点着色器:
片段着色器:
渲染: