目前,我正在尝试使用TileMap 2.1,GLSL1.2来呈现OpenGL。我只想在一次抽签中画出每一块瓷砖。我对所有的瓷砖都使用单一的纹理,通过索引来识别每个纹理。
每个瓷砖的顶点数据是:
vec2 worldPos; // the position to transform the tile Quad in world coordinates
vec2 texCoord; // the uv coordinates, calculated using the tile index, by CPU (top-left corner).
但是我无法找到一种方法来用一个绘图调用来绘制所有东西:
我正在使用OpenGL绘制一个大的瓦片地图,目前由50x50瓦片组成。我使用GLFW、GLEW和GLM来处理大多数OpenGL函数。当我尝试绘制地图时,它只会以大约30 fps的速度渲染,而不是以1000+ fps绘制一个对象。即使我为每个瓷砖绘制一种颜色,而不是纹理。为了绘制我在地图中循环绘制的图块,并将转换应用于单个VBO,诸如之类的答案似乎暗示着,即使这不是渲染大组项目的最有效方法,我应该仍然能够获得不错的帧率。我不知道如何增加我的帧率,而不减少我正在绘制的瓷砖的数量。下面是绘制tiles的相关代码:
绘制平铺的代码(称为每一帧):
for (int i = 0; i < map.
我从一个网站上了解到矩形纹理可以用于屏幕大小的图像。但是,对于函数glGetTexParameterfv,只接受GL_TEXTURE_2D和GL_TEXTURE_CUBE_MAP。这是否意味着OpenGL ES 2.0不支持矩形纹理或GL_TEXTURE_RECTANGLE?我想知道这是否意味着只有标准化的纹理坐标才能在着色器中使用?谢谢。
什么是正确的语法传递一个可变数量的the纺织作为一个数组的片段着色器?
这个StackOverflow问题:提到了使用:
array<texture2d<half>, 5>
但是,这需要指定数组的大小。在 (Sec. )2.11)他们也证明了这种类型。但是,它们也提到了array_ref,但我不清楚如何使用它,或者它是否允许作为共享片段的参数类型,给定以下语句:
“array_ref类型不能作为参数传递给图形和内核函数。”
我目前所做的只是将参数声明为:
fragment float4 fragmentShader(RasterizerData in [[ st