Questions tagged «shaders»

在图形硬件上运行的计算机程序,可高度控制场景的渲染方式


1
带有缓冲对象和着色器的精灵表
用着色器和缓冲区处理子画面的“最佳”方法是什么?在即时模式下,绘制精灵时修改其texcoords很容易,但是我不知道如何使用现代的opengl来实现。我应该将所有texcoords存储在缓冲区中并为每个sprite更改指针,还是有更好的方法?

3
Direct3D纹理采样非常慢
因此,我使用Direct3D 9编写了一个小型游戏,并且针对地形使用了多重纹理。我要做的是对3个纹理和一个混合贴图进行采样,并基于混合贴图的颜色通道从这三个纹理中获取整体颜色。无论如何,当我对1个以上的纹理进行采样时,我的帧速率会大幅下降,我将从120+ fps降至不到50 fps。 这是造成速度下降的HLSL代码: float3 ground = tex2D(GroundTex, multiTex).rgb; float3 stone = tex2D(StoneTex, multiTex).rgb; float3 grass = tex2D(GrassTex, multiTex).rgb; float3 blend = tex2D(BlendMapTex, blendMap).rgb; 我做错了吗?如果任何人有任何有关纹理采样的信息或技巧,那都很好。 谢谢。

6
多通效果的好例子吗?
在XNA(和一般AFAIK中为Direct3D)中,您可能没有创建单独的顶点和片段着色器,而是将许多相关的着色器捆绑到“效果”中。当您开始使用效果时,请选择“技术”(或遍历所有技术),然后每个“技术”都有许多“通过”。您遍历每遍,选择相关的顶点和片段着色器,然后绘制几何图形。 我很好奇的是,您需要多次通过吗?我知道在3d的早期,您只有一个纹理单位,然后只有2个纹理单位,但是如果您还想进行环境映射,那么通常仍然不够用。但是在现代设备上,即使在移动类中,您也可以在单个着色器中采样8个或更多纹理,并执行所需的任意多个光照计算。 这里经验丰富的人能否提供一些仍需要多遍渲染的实际示例,或者这只是XNA / Direct3d的过度设计?
9 xna  directx  shaders 
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.