Example源码Bug备忘
第三章
ch03_drawcommands
glUniformMatrix4fv(render_model_matrix_loc, 4, GL_FALSE, model_matrix);
应改为:
glUniformMatrix4fv(render_model_matrix_loc, 1, GL_FALSE, model_matrix);
原因:
void glUniformMatrix4fv(GLint location, GLsizei count, GLboolean transpose, const GLfloat *value);
Parameters
location
Specifies the location of the uniform value to be modified.
count
Specifies the number of matrices that are to be modified. This should be 1 if the targeted uniform variable is > not an array of matrices, and 1 or more if it is an array of matrices.
transpose
Specifies whether to transpose the matrix as the values are loaded into the uniform variable. Must be GL_FALSE.
value
Specifies a pointer to an array of count values that will be used to update the specified uniform variable.
因为例子使用的是primitive_restart.vs.glsl顶点着色器,model_matrix不是数组,所以参数count应该为1。
还发现了一句注释: // "model_matrix" is actually an array of 4 matrices
不明白为什么model_matrix会是一个包含4个矩阵的数组。并且确实改成1后就能运行了。
(后面发现有一个shader里面的model_matrix确实是一个长度4的数组...估计是混淆了吧)
真是坑。
vmath
vmath::rotation 要改为 vmath::rotate vmath::translation 要改为 vmath::translate
绝对路径....
ch03_instancing的Initialize函数里:
// Load the object
object.LoadFromVBM("C:/Vermilion-Book/trunk/Code/media/armadillo_low.vbm", 0, 1, 2);
太坑了。
把vs和fs写在cpp文件里
如果是为了演示如何手动编译shader,也不用放在多个example里吧。
第四章
ch04_shadowmap的vbm.h和vbm.cpp是不对的,运行会出错
换成第三章的工程里的就OK了。
写作不易,您的支持是我写作的动力!