问题标签 [point-sprites]
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.
opengl - 使用 GLFW 渲染带纹理的点精灵
我目前正在渲染一堆我想使用点精灵应用纹理的点。要加载我的纹理,我正在使用 GLFW。我按照 OpenGL 超级圣经章节中的说明进行操作,但是当我尝试在片段着色器中应用纹理时,它不起作用。
这是我的一些代码片段:
在我的 initGL 方法中启用了 Point Sprite 模式。纹理不适用于点的原因可能是什么?
编辑:我插入了一个 if 语句来查看对 glfwLoadTexture2D 的调用是否正常工作,实际上不是。什么可能导致这失败?我尝试使用相对路径和真实路径作为参数,但仍然没有变化。我也尝试使用不同的 .tga 图片。任何人,仍然没有弄清楚为什么它不起作用?
编辑2:可能是freeglut和glfw不能一起工作吗?
point-sprites - 点精灵和广告牌之间的区别
有人可以告诉我 OpenGL 中的点精灵和广告牌之间的区别吗?我读了很多关于它们的文章,我越来越困惑何时使用它们中的哪一个以及是否真的有区别?
android - 在 Android 上使用 OpenGL ES 2.0 的 Sprite 不透明度
我试图让我的点精灵以正确的不透明度显示。
最初,我在一个黑色方块上获取我的精灵纹理。
因此,我在片段着色器中添加了以下内容:
现在,这似乎确实有效,因为我的精灵显示没有黑色背景,但是,我的纹理本身是“部分透明的” - 它没有显示这种部分透明度,它看起来是实心的。这有点难以解释,但我希望你明白我的意思。如果我使用 canvas/surfaceview 绘制相同的纹理,它会正确显示。
基本上我试图让我的纹理以它们的原始格式显示(即,就像它们在创建它们的软件中所做的那样 - 即 Gimp / photoshop 等)。
将不胜感激任何帮助 - 谢谢
android - 在 Android OpenGL ES 2.0 中使用点精灵
我看过一些关于“点精灵与纹理四边形精灵”之类的讨论。
但是,如果我理解正确,有一件事让我感到困惑,点精灵的大小是否受到限制(按点精灵范围)?
我对 OpenGL ES 2.0 相当陌生,所以很可能会遗漏一些东西,但是在什么情况下可以在游戏中有效地使用点精灵(除了明显的粒子系统)?如果它们不能超过一定的大小,那么它们对字符等不是毫无用处吗?(我也知道最小和最大尺寸可能因设备而异,这使得事情变得更加不可预测)?
编辑:根据下面的评论和进一步的研究,似乎唯一保证“点”的大小是“1”(即 1 个像素)。
那么在像 Android 这样具有如此多屏幕 DPI 和分辨率的系统上,点是否真的可用于粒子系统?
让我详细说明一下,在低 Res / DPI 屏幕上,单个像素点会显得非常大,但是说,具有真正高分辨率 / DPI 屏幕的 Nexus 10 平板电脑,单个像素点几乎不会被注意到。通常,当我使用精灵时,我会根据屏幕分辨率缩放它们(即,如果我希望精灵占据可用屏幕的 1/4,我将简单地在 X 和 Y 方向上按 screen/2 缩放它。这给出了我的屏幕独立并且效果很好。但是如果我需要在我的 N10 平板电脑上使用 4 的粒子大小,那么它占用的相对空间与只使用一个点的低端(和低分辨率)电话设备相同大小为 1,我不能保证任何大于 1 像素的东西 - 这将如何工作?
我只是想了解点/点精灵何时在像 Android 这样的系统中有用!?
macos - OpenGL 相当于 GL_POINT_SIZE_ARRAY_OES?
我正在尝试在一个小型 Mac 应用程序中绘制点精灵。我希望每个精灵都有自己的大小,并且我知道 OpenGL ES 具有客户端状态“GL_POINT_SIZE_ARRAY_OES”。
我做了一些谷歌搜索,发现有一个类似的值“GL_POINT_SIZE_ARRAY_APPLE”(你认为)应该做同样的事情。但是,出于某种原因,它似乎没有。这是我的绘图代码:
SpriteData 是一个包含每个精灵的顶点/大小数据的结构。spriteVertices 只是该结构的交错数组。
顶点指针工作正常;它正在绘制精灵,但似乎忽略了它们的大小值。相反,它默认为 glPointSize() 设置的值。
尽管这段代码编译时没有任何警告,但在我看来,谷歌搜索“GL_POINT_SIZE_ARRAY_APPLE”几乎没有结果。这是一个无用的参数吗?如果是这样,我还能如何实现我想要的?
opengl - OpenGL 4.3 中的纹理点精灵
有没有办法将纹理应用于 OpenGL 4.3 中的点精灵?我在互联网上搜索过,但大多数教程和指南都使用仍然支持的旧版本:
但是,似乎不再支持此功能,并且标准纹理环境似乎不起作用。关于如何做或在哪里可以找到如何做的任何建议?
c++ - 为什么这个简单的 OpenGL ES 2.0/SDL 2 程序不能让我改变我的点精灵大小?
我正在开发一个简单的 OpenGL ES 2.0 程序(与 SDL 2 一起使事情变得更容易一些)并决定尝试点精灵。我能够让它们成功绘制,但我无法通过从顶点着色器输出 gl_PointSize 来改变它们的大小。从理论上讲,这应该是我所要做的。
下面的代码片段是我几乎没有 C++ 代码的一个非常精简的版本(根本没有错误检查,但那是因为它应该不会出错),它演示了我如何尝试更改我的点精灵的大小. 它已经在两台完全不同的计算机上进行了测试,结果相似(Linux,但 32 位/软件渲染与 64 位/离散 GPU),并且可以使用带有g++ main.cpp -lSDL2 -Wall -D_REENTRANT -lGLESv2
.
运行时,程序应该根据我在顶点着色器中设置的值生成一个大小为 128 像素的点精灵。然而,当实际执行时,窗口中心的点精灵的大小正好是一个像素。我究竟做错了什么?
opengl - 在每个顶点渲染不同的 OpenGL 点精灵
基本问题:使用 OpenGL,可以使着色器程序使用单个 glDrawArrays 调用(使用 GL_POINTS)在每个顶点绘制不同的点精灵吗?
更多信息:我有一个可以显示数千个 2D 轨迹的 OpenGL 桌面程序(在 WPF 应用程序中使用 SharpGL)。部分地,轨迹是一系列时间戳点,并且部分点根据可变 CurrentTime 周围的时间跨度显示。每个点的其他属性决定了该点的颜色。每个轨道绑定它的顶点数组、颜色数组和时间戳数组,并调用 glDrawArrays 来渲染它的点。着色器程序完成其余的工作。
我最近开始使用点精灵为不同类型的轨道赋予不同的符号来表示它们的点。我想根据每个点的其他属性在轨道上给出不同的符号不同的点。我想为每个轨道调用一个 glDrawArrays 来做到这一点。所以想法是一个精灵数组可以解决问题(对每个顶点应用不同的精灵)。这可能吗?我错过了更好的解决方案吗?
opengl - 使用现代 OpenGL 衰减点精灵大小
我正在尝试使用点精灵用 OpenGL 3+ 渲染一些粒子。我刚刚意识到我的观点存在重大问题。它们的大小会根据相机距离自动增加。结果如下:
靠近粒子发射器:
而在远处,一切都显得模糊而臃肿:
在旧版本中,似乎可以使用glPointParameter
. 该函数在新的 3+ OpenGL 中仍然可用,但它只支持两个参数。GL_POINT_FADE_THRESHOLD_SIZE
似乎是我需要的,但我尝试过没有结果。我也在使用glEnable(GL_PROGRAM_POINT_SIZE);
还有其他方法可以避免根据相机距离自动缩放点吗?我宁愿不必更改代码来使用由三角形制成的标准广告牌。
目前不确定是否相关,但这是我正在使用的顶点着色器:
c++ - Oculus Rift + 点精灵 + 点大小衰减
我正在编写一个支持 Oculus Rfit 的小项目,我使用点精灵来渲染我的粒子。我根据它们与顶点着色器中“相机”的距离来计算点精灵的大小(以像素为单位)。在默认屏幕上(不是在 Rift 上)绘制时,尺寸效果很好,但是当我切换到 Rift 时,我注意到这些现象:
左眼上的颗粒很小,而且会迅速缩小。右眼的颗粒很大,大小不变。
截图:裂谷禁用: http: //i.imgur.com/EoguiF0.jpg 裂谷启用:http: //i.imgur.com/4IcBCf0.jpg
这是顶点着色器:
st_screen_size 统一是视口的大小。由于我在 Rift 上渲染时使用单个帧缓冲区(每只眼睛一半),st_screen_size 的值应该是(frabuffer_width / 2.0,frambuffer_height)。
这是我的抽奖电话:
这个问题已经困扰了我很多天了……我觉得我已经走到了尽头。我可以只使用广告牌四边形......但我不想轻易放弃:) 加上点精灵更快。在 Rift 上渲染时,是否根据距离变化进行点大小衰减背后的数学运算?是不是没有考虑到某些事情?数学不是(但至少)我的强项。:) 任何见解将不胜感激!
PS:如果需要有关我发布的代码的任何其他信息,我将很乐意提供。