我对图形编程比较陌生,而且我刚刚阅读了一些书籍并且一直在浏览教程,所以如果这似乎是一个愚蠢的问题,请原谅我。
我已经掌握了directx11 的基础知识并开始运行,现在我想找点乐子。所以很自然地,我一直在大量阅读着色器管道,我已经着迷了。编写一段简单、微小的代码,它必须足够高效,以每 60 秒运行数万次而不浪费资源,这让我急于掌握这个概念,然后再继续下去,可能会弄得一团糟东西的。我遇到的问题是掌握像素着色器实际在做什么。
顶点着色器很容易理解,你将一个对象的顶点组织在统一的数据结构中,这些数据结构与它相关的信息,比如位置和纹理坐标,然后将每个顶点传递给着色器,通过变换矩阵从 3d 转换为 2d . 只要我理解它,我就可以弄清楚如何编码。
但我没有像素着色器。我得到的是顶点着色器的输出是像素着色器的输入。那么这不就是将多边形顶点的二维坐标交给像素着色器吗?我所理解的是像素着色器接收单个像素并对它们执行计算以确定颜色和照明等内容。但如果这是真的,那么哪些像素呢?整个屏幕还是仅位于转换后的 2d 多边形内的像素?
还是我完全误解了某些东西?