我想知道是否值得使用着色器在xna中绘制2D纹理。我在问,因为使用openGL,如果你使用GLSL,速度会更快。是否值得使用hlsl着色器进行2D绘图
0
A
回答
4
现代GPU上的所有东西都是使用着色器绘制的。
对于旧的直接渲染(即:glBegin
/glVertex
),这将转换为近似驱动程序中某处的缓冲区和着色器。这就是为什么使用GLSL“更快” - 因为它更接近金属,所以你没有经过转换层。
对于像XNA这样的现代API,一切都是围绕“缓冲区和着色器”构建的。
在XNA中,SpriteBatch
提供了它自己的着色器。着色器的源代码是available here。着色器本身是很简单简单:顶点着色器是一个单一的矩阵乘法,用于将顶点转换为正确的光栅位置。像素着色器仅从您的精灵纹理中进行采样。
对于使SpriteBatch
的着色器速度更快 - 你几乎没有什么可以做的。在特定情况下,您可以做一些事情来加快缓冲行为(例如:如果您的精灵在帧之间不发生变化) - 但这是一种先进的方式。如果您遇到SpriteBatch
的性能问题,请确保您是using it properly in the first place。对于它的作用,SpriteBatch
已经非常优化。
有关优化的更多信息,请参阅this answer。
如果你想一个定制着色器传递到SpriteBatch
(如:用于特殊效果)使用this超载Begin
,并通过在适当的Effect
。
相关问题
- 1. 加载和使用HLSL着色器?
- 2. HLSL投影着色器
- 3. HLSL:多通道着色器?
- 4. HLSL着色器减去背景图像
- 5. 对HLSL 2D着色器教程的建议?
- 6. 。用于OpenGL着色器的.HLSL文件
- 7. HLSL半透明塑料着色器
- 8. 问题HLSL着色器转换成shaderLab
- 9. HLSL几何着色器空输出
- 10. 使用计算着色器进行Mipmapping
- 11. 使用着色器进行计算
- 12. CSS着色器是否适用于2d画布?
- 13. 确定是否可以使用两种颜色对无向图进行着色
- 14. 从精灵一批获得色调颜色,HLSL着色
- 15. 如何判断HLSL着色器代码对于给定的着色器版本是否有效?
- 16. 使用HLSL中的着色器资源(端口DX9-> DX10)
- 17. 用空着色器程序绘制是否有效?
- 18. 从HLSL顶点着色器传递数组到像素着色器
- 19. 使用DirectX HLSL像素着色器为照片创建图像效果
- 20. 在MATLAB中着色绘图
- 21. 自定义HLSL着色跨越icosphere
- 22. HLSL - 顶点着色器的输出POSITION0如何影响像素着色器的纹理贴图uv?
- 23. 使用着色器
- 24. 是否可以使用着色器来查找两个纹理之间的“差异”? (XNA/HLSL)
- 25. OpenGL ES 2:简单绘图是否需要顶点和片段着色器?
- 26. 使用着色器在2D环境中实现视场
- 27. Java 2D着色/填充
- 28. 编译着色器是否合适?
- 29. 是否可以在没有着色图标的情况下对TabBar进行着色?
- 30. 我是否可以使用交互式排序对一列进行着色?