Questions tagged «opengl»

OpenGL是针对台式机和工作站市场的图形标准和API。它的设计易于通过专用计算机硬件进行加速,因此与传统的软件渲染相比,大多数实现方式都可以大大提高性能。当前,OpenGL用于CAD软件和计算机游戏等应用程序。它也是跨平台的。OpenGL标准由Khronos组控制,该组还控制OpenGL ES。

2
opengl的最常见3D模型格式
我是一个新手,开始在Android设备上使用OpenGL ES。为了练习OpenGL,我想创建一个小型游戏引擎,所以我想知道最好的3D模型文件格式是什么。 我也对相同格式的免费模型感兴趣。 你有什么建议?
12 opengl  3d  models 

4
GLM:欧拉角与四元数
希望您知道GL数学(GLM),因为我遇到了问题,我无法中断: 我有一组欧拉角,我需要在它们之间进行平滑插值。最好的方法是将它们转换为四元数并应用SLERP算法。 我的问题是如何用Euler Angles 初始化 glm :: quaternion? 我一遍又一遍地阅读了GLM文档,但我找不到合适的文档Quaternion constructor signature,那需要三个欧拉角。我找到的最接近的是 angleAxis()函数,该函数获取角度值和该角度的轴。请注意,我正在寻找一种方法,如何解析RotX, RotY, RotZ。 供您参考,这是上面提到的angleAxis() 函数签名: detail::tquat< valType > angleAxis (valType const &angle, valType const &x, valType const &y, valType const &z)

5
边缘上的Skybox纹理伪像
我在Mac上绘制Skybox纹理时遇到奇怪的问题。在iPhone上,一切正常。我尝试更改近端和远端的值没有成功。 它是一个包含六个纹理的天空盒,对于每个纹理,我都设置为: glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); 可能是什么问题呢? 屏幕截图: 编辑: 我尝试将背景色设置为红色,以确保其是否通过纹理渗出 我还尝试将纹理的坐标更改为: float err_corr = 0.5 / TEXTURE_SIZE; GLfloat vertices[24] = { -1.0f - err_corr, -1.0f - err_corr, 1.0f + err_corr, 1.0f + err_corr, -1.0f - err_corr, 1.0f + err_corr, -1.0f - err_corr, …
12 opengl  textures  macos  sky 

8
2d Game Dev(C ++)入门:DirectX还是OpenGL?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 因此,我是一名学生,希望进入游戏开发的大门,而我却希望做2D事情,也许是俄罗斯方块/太空入侵者/带有小鼠标互动克隆的东西。 我将搜索指向C ++和2d,最终导致了DirectX / OpenGL 现在,据我所知,所有这些软件包对我来说都是在屏幕上绘制东西。这就是我现在真正关心的全部。声音不是必需的。输入可能可以用stdlib处理。 因此,对于尝试使用C ++创建基本游戏的初学者,您会推荐DirectX还是OpenGL?为什么?两者之间有哪些主要功能差异?哪个更有用?
12 c++  opengl  directx 

7
创建简单粒子效果的最快方法
我正在寻找创建真正简单的粒子效果的最快方法,该效果在游戏中会像地狱般被散布。 基本上,我的游戏看起来像是vectrex游戏,主要由线条组成...我想进行一些小爆炸,这确实很常见。 有什么比仅移动某些点并使用GL_Point渲染更快的方法吗?

5
API不可知的桥梁(即OpenGL / D3D /任何)。您是否使用它们,如何制作它们。专业人士和骗子[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 2年前关闭。 您正在制作3D引擎。您想要最好的多平台世界。突然您意识到,如果要在Windows机器上使用Direct3D,在OSX / Linux上使用OpenGL,则必须牺牲这两个最小公分母的支持功能。 有些人可能会在三个OS上使用OpenGL,因为它本身似乎是最小公分母。一切都很好。然后,您必须将图形API后端移植到Nintendo的GX,还必须创建PS3和Xbox360路径。 你是做什么?您是否设计自己的API(本身是最不常见的),并为每个平台编写后端实现,还是为每个平台编写自己的分支? 如果您选择设计自己的API,是使用网桥模式还是自己的伏都教?疯狂在哪里停止,您意识到一切都停止了,厨房水槽方法也必须停止,并且基本上每个平台都有一个单独的引擎作为分支。或者,您坚持一切和厨房水槽,并在每个平台的后端模块专业化中保留平台特定信息。

1
什么是屏幕空间导数?何时使用它们?
我偶尔看到着色器代码中出现了ddx和ddyglsl函数以及hlsl等效项。我目前正在使用它们来进行不切线或不切线的凹凸贴图,但是我基本上是复制粘贴了代码。我不了解这些功能的实际含义,作用以及何时使用它们。 所以问题: 屏幕空间派生函数是什么? 这些功能做什么?输入值和输出值 它们最常用于什么效果? 什么样的效果需要您关注这些功能?

2
更改GL_TEXTURE_WRAP)_(S / T)有什么作用?
我正在研究一些OpenGL初学者教程,而当前的教程则教如何将纹理应用于简单的矩形。教程中的状态告诉我将纹理参数GL_TEXTURE_WRAP_S和GL_TEXTURE_WRAP_T设置为GL_CLAMP_TO_EDGE,但是我不确定它的实际作用。我知道这与如何处理大于/小于被映射到的空间的纹理有关,但是我不确定这实际上会导致什么行为。GL_CLAMP_TO_EDGE有什么作用?与GL_CLAMP,GL_CLAMP_TO_BORDER,GL_REPEAT有何不同?在此先感谢您,如果可以为像我这样的白痴提供图片,请多加帮助。
12 opengl  textures 

1
glDrawArrays和glDrawElements的区别
在刷新OpenGL ES的想法时,我遇到了glDrawArrays和glDrawElements。 我了解它们的用法,并有点理解它们为何与众不同。 我似乎不明白的是,我看不到如何glDrawElements保存绘图调用(保存绘图调用是我所读过的大多数书籍都提到的描述,因此我在这里提到了)。 想象一个简单的场景,其中我尝试使用2个三角形绘制一个正方形。 使用glDrawArrays时glDrawElements,我需要使用6个顶点的集合,除了具有6个元素的索引数组之外,我只需要4 个顶点。 鉴于以上所述,这是我不了解的内容: glDrawElements如果仍然需要使用索引数组(在正方形的情况下为6个索引)来索引具有4个元素(6次)的顶点数组,如何保存绘图调用?换句话说,这glDrawElements是否仍意味着总共需要进行6次抽签glDrawArrays? glDrawElements如果一个仍然需要2个数组,即一个用于顶点,一个用于索引,该如何节省空间? 为了从2个三角形绘制一个正方形,为简单起见,分别需要多少次绘制调用glDrawElements(顶点数组中4个项目,而索引数组中glDrawArrays6个项目)和(顶点数组中仅6个项目)? 谢谢。

2
如何制作自然的体素
我正在开发体素游戏,但我认为我使用了错误的技术。我目前使用扁平砖砌块,并且我认为有一种更好,更有效的方法。 我看过一个自然看似地形的体素游戏。我的意思是非阻塞。该游戏每立方米有4 * 4 * 4个块,并且块如泥土,沙子和石头,具有圆形边缘以及融化在一起(类似于普通游戏)。继承人截图 如何实现的?

2
OpenGL的直接状态访问机制的优点是什么?
我一直在opengl.org上阅读有关OpenGL 4.5直接状态访问(DSA)的信息,但不确定是否正确。 似乎暗示着,旧方法的效率较低: glBind(something) glSetA(..) glSetB(..) glSetC(..) 比新方法: glSetA(something, ..) glSetB(something, ..) glSetC(something, ..) 从外观上看,每个组件glSet都必须包含glBind(something)在其中,并且如果OpenGL仍然是状态机,则无法利用应用于单个对象的流式更改something。 请说明新DSA的原因和优势。
11 opengl 

1
如何分别描述顶点着色器和片段着色器的速度?
我想知道如何检查顶点或片段着色器是渲染管道中的瓶颈。 我已经读过glQueryCounter与GL_TIMESTAMP目标一起使用以获取OpenGL命令之间的时钟检查点的信息,但是这些不能区分不同类型的着色器。 例如,如果GPU上的一帧需要8毫秒的渲染时间,我是否可以说顶点着色器需要7毫秒,片段着色器需要1毫秒?

2
如何实现平移,缩放,旋转小控件来操纵3D对象的变换?
我正在开发基本的3D编辑器。它使用OpenGL渲染3D世界。现在,我的场景只是几个大小不同的盒子,而我正处于一个阶段,我希望能够选择每个盒子,然后对其进行移动/缩放/旋转以实现所需的任何变换。 我该如何解决以下问题:既实现这些工具的Gizmos(或手柄,又或者人们通常如何称呼它们)的渲染,又要在每个轴上拾取它们以用鼠标执行变换中的更改?为了清楚起见: 到目前为止,我的研究表明,最干净的方法是在Gizmo中为每个箭头设置一个与轴对齐的边界框,然后在每个正方形中使另一个箭头对齐(将对象沿平面而不是单轴移动),然后从鼠标投射光线定位并查看其碰撞。但这对我来说仍然太抽象了,我希望进一步了解该算法的运行方式(伪代码已足够)
11 opengl  3d 

3
仅高细节渲染屏幕的一部分
如果以较大的视角渲染图形(例如,非常大的电视或VR头戴式受话器),则观看者实际上无法将注意力集中在整个图像上,而只是整个图像的一部分。(实际上,常规尺寸的屏幕也是如此。) 结合跟踪观众眼睛的方式(我想这在VR中几乎是可行的),您可以在理论上加以利用,并通过逐渐减少细节和分辨率来使图形远离观众焦点,从而获得性能,而不会损失感知质量。 今天有没有可用的或正在开发的技术?

3
3D渲染中索引的目的是什么?
假设您正在OpenGL中创建3D立方体。为对象(多维数据集)实现必要的顶点数据。使用索引的意义是什么? void CreateCube() { const Vertex VERTICES[8] = { { { -.5f, -.5f, .5f, 1 }, { 0, 0, 1, 1 } }, { { -.5f, .5f, .5f, 1 }, { 1, 0, 0, 1 } }, { { .5f, .5f, .5f, 1 }, { 0, 1, 0, 1 } …
11 opengl 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.