当前位置: 首页 > 知识库问答 >
问题:

OpenGL GLSL渲染到纹理

陈寒
2023-03-14

我正在尝试使用OpenGL GLSL着色器渲染到纹理。首先,我尝试用白色填充30x30纹理的每个像素。我将顶点着色器索引从0传递到899,表示纹理的每个像素。对吗?顶点着色器:

flat in int index;

void main(void) {
gl_Position = vec4((index % 30) / 15 - 1, floor(index / 30) / 15 - 1, 0, 1); 
}

片段着色器:

out vec4 color;


void main(void) {
color = vec4(1, 1, 1, 1);
}

共有1个答案

满玉泽
2023-03-14

你试图渲染900个顶点,每个像素一个顶点?你为什么要这么做?你使用的是什么原始类型。只有当你使用点时才有意义,但是你需要稍微修改输出坐标才能真正到达片段中心。

通常的方法是只渲染一个填充整个帧缓冲区的四边形(很容易表示为只有4个顶点的三角形条带)。要实现这一点,只需将视口设置为完整的frambeuffer,并从(-1,-1)到(1,1)进行渲染。

请注意,在这两种方法中,都不需要顶点属性。你可以直接使用gl_VertexID(在你的方法中直接作为index的替代品,或者作为四个顶点坐标的常量数组的索引)。

 类似资料:
  • 渲染纹理是一张在 GPU 上的纹理。通常我们会把它设置到相机的 目标纹理 上,使相机照射的内容通过离屏的 frambuffer 绘制到该纹理上。一般可用于制作汽车后视镜,动态阴影等功能。 使用 RenderTexture // 方法一:把 3D 相机照射的内容绘制到 UI 的精灵帧上 export class CaptureToWeb extends Component { @proper

  • “渲染到纹理”是一系列特效方法之一。基本思想是:像通常那样渲染一个场景——只是这次是渲染到可以重用的纹理中。 应用包括:游戏(in-game)相机、后期处理(post-processing)以及你能想象到一切. 渲染到纹理 我们有三个任务:创建要渲染的纹理对象;将纹理渲染到对象上;使用生成的纹理。 创建渲染目标(Render Target) 我们要渲染的对象叫做帧缓存。它像一个容器,用来存纹理和一

  • 这是代码中唯一可能有错误的部分: 你能在这段代码中看到什么错误吗?启用glEnable(GL_TEXTURE_2D)并没有什么不同。纹理坐标是正确的,片段和顶点着色器肯定是正确的。 解决了这不是问题,我仍在使用glGenerateMipmap(…)在glTexImage2D(…)之前。真正的问题是,当我的图像是GL_RGB格式时,我通过了格式GL_RGBA。另外我的t-

  • 纹理根本不渲染,几何体都是黑色的。 截图:http://i.imgur.com/ypMdQY4.png 代码:http://pastebin.com/SvB8rxxt 我也会链接到我试图渲染的纹理和transformations.py模块,但是我没有被允许放置两个以上链接的声誉。谷歌搜索“现代opengl 02”会给你前者的教程,“转换py”会给你后者。 搜索“纹理材料开始”以查找纹理材料的设置位

  • 我试图弄清楚为什么我不能用LWJGL 3渲染任何纹理。我尝试了多种加载(PNGDecoder、STB、BufferedImage)和渲染纹理的方法。但结果总是一个白色的四边形。 主要类: 加载方法: 渲染方法: ModelTexture类只是存储一些现在不使用的信息,blue.png是16x16的png文件。 这是我在启动程序时得到的输出:

  • 方法 构造函数 参数 类型 名称 备注 width number 宽 height number 高 返回值: 类型 名称 备注 Object BK.RenderTexture对象 例子: var renderTexture = new BK.RenderTexture(BK.Director.screenPixelSize.width, BK.Director.screenPixelSize.h