trying to tackle the unenderstood transform value not going through corectly?

This commit is contained in:
Sam Gateau 2015-02-18 16:00:37 -08:00
parent 2788b1d37d
commit 11060ed273
4 changed files with 19 additions and 16 deletions

View file

@ -492,21 +492,23 @@ void GLBackend::updateTransform() {
}
if (_transform._invalidView || _transform._invalidProj) {
glBindBuffer(GL_UNIFORM_BUFFER, _transform._transformCameraBuffer);
glBufferSubData(GL_UNIFORM_BUFFER, 0, sizeof(_transform._transformCamera), (const void*) &_transform._transformCamera);
glBindBuffer(GL_UNIFORM_BUFFER, 0);
glBindBufferBase(GL_UNIFORM_BUFFER, 2, 0);
glBindBuffer(GL_ARRAY_BUFFER, _transform._transformCameraBuffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(_transform._transformCamera), (const void*) &_transform._transformCamera, GL_DYNAMIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
CHECK_GL_ERROR();
}
if (_transform._invalidView || _transform._invalidModel) {
glBindBuffer(GL_UNIFORM_BUFFER, _transform._transformObjectBuffer);
glBufferSubData(GL_UNIFORM_BUFFER, 0, sizeof(_transform._transformObject), (const void*) &_transform._transformObject);
glBindBuffer(GL_UNIFORM_BUFFER, 0);
glBindBufferBase(GL_UNIFORM_BUFFER, 6, 0);
glBindBuffer(GL_ARRAY_BUFFER, _transform._transformObjectBuffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(_transform._transformObject), (const void*) &_transform._transformObject, GL_DYNAMIC_DRAW);
glBindBuffer(GL_ARRAY_BUFFER, 0);
CHECK_GL_ERROR();
}
glBindBufferRange(GL_UNIFORM_BUFFER, 6, _transform._transformObjectBuffer, 0, sizeof(TransformObject));
glBindBufferRange(GL_UNIFORM_BUFFER, 7, _transform._transformCameraBuffer, 0, sizeof(TransformCamera));
glBindBufferBase(GL_UNIFORM_BUFFER, 6, _transform._transformObjectBuffer);
glBindBufferBase(GL_UNIFORM_BUFFER, 2, _transform._transformCameraBuffer);
CHECK_GL_ERROR();
// Do it again for fixed pipeline unitl we can get rid of it

View file

@ -26,10 +26,10 @@ float getMaterialShininess(Material m) { return m._specular.a; }
<@if GLPROFILE == PC_GL@>
uniform materialBuffer {
Material mat;
Material _mat;
};
Material getMaterial() {
return mat;
return _mat;
}
<@elif GLPROFILE == MAC_GL@>
uniform vec4 materialBuffer[2];

View file

@ -231,11 +231,11 @@ void Model::initProgram(ProgramObject& program, Model::Locations& locations, boo
loc = glGetUniformBlockIndex(program.programId(), "transformCameraBuffer");
if (loc >= 0) {
glUniformBlockBinding(program.programId(), loc, 7);
glUniformBlockBinding(program.programId(), loc, 2);
// locations.materialBufferUnit = 1;
}
program.link();
//program.link();
if (!program.isLinked()) {
program.release();
}

View file

@ -48,10 +48,11 @@ void main(void) {
// use standard pipeline transform
//gl_Position = ftransform();
//gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
// TransformObject obj = getTransformObject();
TransformCamera cam = getTransformCamera();
//gl_Position = gl_ProjectionMatrix * gl_ModelViewMatrix * gl_Vertex;
//TransformCamera cam = getTransformCamera();
/* TransformObject obj = getTransformObject();
// gl_Position = transform(cam, obj, gl_Vertex);
*/
vec4 vPos = gl_ModelViewMatrix * gl_Vertex;
gl_Position = cam._projection * vPos;
gl_Position = camera._projection * vPos;
}