所以,我有以下问题一直困扰着我一段时间。
着色器绘制顶点组。因为它是从文本文件加载到 GPU 中的,所以 OpenGL根本不需要输入它。
struct Shader
{
// Load that shader from filename
Shader( string filename ... ) ;
} ;
在我的代码中输入了一组顶点
VertexArray<VertexPTC> ptcVerts ; // PTC is position, texcoord, color.
一个数组ptcVerts
只能由 a 绘制ptcShader
。pcVerts
尝试使用 a绘制数组ptShader
是错误的(因为颜色值将被解释为 texcoords)。
所以我希望编译器标记出这种错误。就是这样:
template<typename T> struct Shader
现在着色器,虽然它从不使用,但它是T
在编译时输入的。编译器现在强制执行 aVertexArray<VertexPTC>
由 a 绘制的限制Shader<VertexPTC>
。
这是好事还是坏事?着色器不需要或使用T
,所以我担心我对模板的使用在某种程度上是一种滥用。