mirror of
https://github.com/JulianGro/overte.git
synced 2025-08-28 15:26:18 +02:00
trying to tackle the unenderstood transform value not going through corectly?
This commit is contained in:
parent
2788b1d37d
commit
11060ed273
4 changed files with 19 additions and 16 deletions
|
@ -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
|
||||
|
|
|
@ -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];
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue