小编Thi*_*ago的帖子

适用于Mac OS X的Pascal IDE

我是初学者Pascal程序员,最近我迁移到了Mac OS X.今天我花了很多时间为这个操作系统寻找一个好的Pascal IDE,却一无所获.我以前在Windows上用Geany编写代码,它就像一个魅力,我也很喜欢Geany的编译和运行能力.

你知道任何类似Geany的IDE或至少一个在Mac OS X上突出显示,编译和运行pascal代码的IDE吗?

非常感谢你!

ide macos pascal

6
推荐指数
1
解决办法
1万
查看次数

纹理变形着色器:极坐标到直角坐标

我正在使用 OpenGL 编写一个 2D 游戏,并且计划了一个阴影投射算法,该算法需要将纹理从极坐标转换为直角坐标。想要的效果如下:

由此:

在此输入图像描述

对此:

在此输入图像描述

我知道在极坐标和矩形系统之间转换坐标的公式,但我在编写着色器以实现所需效果时遇到问题。

我的着色器接收纹理作为输入,并且应该将扭曲的纹理绘制到屏幕上。我计划了以下内容(知道片段着色器一次作用于一个片段):

  1. 使用 gl_FragCoord.xy 查找当前片段的坐标
  2. 确定对应于点 (x, y) 的 r 和 theta。
  3. 将r和theta转换为texture_x和texture_y(将用于对纹理进行采样)
  4. 将采样的像素传输到当前片段

我的最终结果是相同的输入纹理顺时针旋转 90 度。我认为我在步骤 3 中遗漏了一些内容。我可能只是获得当前片段的相同 x 和 y,因为我只是使用变换和逆变换公式。我应该如何进行才能得到预期的结果?

这是我的着色器:

#version 120

uniform sampler2D tex;

void main() {

  vec2 fragCoords = gl_FragCoord.xy - vec2(128, 128); //shift the coordinates so that 0, 0 is in the center of the screen (the final texture is 256 * 256)
  fragCoords /= vec2(256, 256);
  float r = sqrt(pow(fragCoords.x, 2) + pow(fragCoords.y, 2));
  float theta …
Run Code Online (Sandbox Code Playgroud)

opengl math shader transformation

6
推荐指数
1
解决办法
2940
查看次数

使用glBufferSubData()更新VBO数据

我目前正在使用LWJGL编写一个用Java 1.6编写的2d自上而下的RPG.我在我的游戏中实现了VBO的使用,现在我维护了两个:一个用于顶点数据,一个用于纹理坐标.

这一切都很好,除了我还没有一个真正合理的方式更新对象.作为一个例子,如果我想要一个特定的瓷砖来改变它的纹理(改变VBO内部的纹理坐标以显示纹理图纸的另一个区域),我看不到只改变对应的纹理坐标的方法这个单一的瓷砖.我现在所能想到的可能是填充每个循环所需的所有数据的缓冲区,并且每帧都使用glBufferData上传它们.它工作但似乎不是最好的方式(或它呢?).

现在,有glBufferSubData命令,它不会分配新的内存,只会改变我告诉它改变的部分.问题是我不知道如何跟踪必须改变的区域(偏移).LWJGL提供glBufferSubData(目标,偏移,数据); 命令,只需要缓冲区的开始工作.偏移是否像索引?

因此,如果我首先将这些缓冲区上传到VBO,然后想要更改第二个float []的第二个值:

FloatBuffer vertexData = BufferUtils.createFloatBuffer(amountOfVertices * vertexSize);
vertexData.put(new float[]{100, 100, 300, 100, 300, 300, 100, 300});
vertexData.put(new float[]{400, 100, 600, 100, 600, 300, 400, 300});
vertexData.flip();
Run Code Online (Sandbox Code Playgroud)

我将生成新数据,将其放在一个小的FloatBuffer中并使用glBufferSubData(GL_VERTEX_ARRAY,10,newFloatBuffer)上传; 10是因为我想从第十个旧值改变值.

是对的吗?有没有更好的方法呢?再说一遍:如果我每帧重新上传整个数据,这样可以吗?

java opengl vbo

5
推荐指数
1
解决办法
4406
查看次数

标签 统计

opengl ×2

ide ×1

java ×1

macos ×1

math ×1

pascal ×1

shader ×1

transformation ×1

vbo ×1