making sure the proj and view matrix are correctly assigned

This commit is contained in:
Sam Gateau 2015-06-02 14:31:40 -07:00
parent 901717fb2c
commit 453fa87654
5 changed files with 40 additions and 17 deletions

View file

@ -34,6 +34,7 @@
using namespace std;
void renderWorldBox() {
return;
auto geometryCache = DependencyManager::get<GeometryCache>();
// Show edge of world

View file

@ -45,6 +45,9 @@
#include "Util.h"
#include "InterfaceLogging.h"
#include "gpu/GLBackend.h"
using namespace std;
const glm::vec3 DEFAULT_UP_DIRECTION(0.0f, 1.0f, 0.0f);
@ -1472,7 +1475,8 @@ void MyAvatar::maybeUpdateBillboard() {
return;
}
}
RenderArgs renderArgs;
gpu::Context context(new gpu::GLBackend());
RenderArgs renderArgs(&context);
QImage image = Application::getInstance()->renderAvatarBillboard(&renderArgs);
_billboard.clear();
QBuffer buffer(&_billboard);

View file

@ -523,9 +523,9 @@ void EntityTreeRenderer::render(RenderArgs* renderArgs) {
Model::endScene(renderArgs);
_tree->unlock();
glPushMatrix();
renderArgs->_context->render(batch);
glPopMatrix();
// glPushMatrix();
// renderArgs->_context->render(batch);
// glPopMatrix();
renderArgs->_batch = nullptr;

View file

@ -2232,7 +2232,7 @@ void Model::renderPart(RenderArgs* args, int meshIndex, int partIndex, bool tran
}
// _transforms[0] = _viewState->getViewTransform();
_transforms[0].evalFromRawMatrix(args->_viewFrustum->getView()); //_viewState->getViewTransform();
args->_viewFrustum->evalViewTransform(_transforms[0]);
// apply entity translation offset to the viewTransform in one go (it's a preTranslate because viewTransform goes from world to eye space)
_transforms[0].preTranslate(-_translation);

View file

@ -267,12 +267,15 @@ template <> void render::jobRun(const DrawOpaque& job, const SceneContextPointer
RenderArgs* args = renderContext->args;
gpu::Batch theBatch;
args->_batch = &theBatch;
gpu::Batch batch;
args->_batch = &batch;
glm::mat4 proj;
args->_viewFrustum->evalProjectionMatrix(proj);
theBatch.setProjectionTransform(proj);
glm::mat4 projMat;
Transform viewMat;
args->_viewFrustum->evalProjectionMatrix(projMat);
args->_viewFrustum->evalViewTransform(viewMat);
batch.setProjectionTransform(projMat);
batch.setViewTransform(viewMat);
renderContext->args->_renderMode = RenderArgs::NORMAL_RENDER_MODE;
{
@ -281,7 +284,7 @@ template <> void render::jobRun(const DrawOpaque& job, const SceneContextPointer
buffers[bufferCount++] = GL_COLOR_ATTACHMENT0;
buffers[bufferCount++] = GL_COLOR_ATTACHMENT1;
buffers[bufferCount++] = GL_COLOR_ATTACHMENT2;
theBatch._glDrawBuffers(bufferCount, buffers);
batch._glDrawBuffers(bufferCount, buffers);
}
renderItems(sceneContext, renderContext, renderedItems);
@ -316,8 +319,15 @@ template <> void render::jobRun(const DrawTransparent& job, const SceneContextPo
renderedItems = sortedItems;
RenderArgs* args = renderContext->args;
gpu::Batch theBatch;
args->_batch = &theBatch;
gpu::Batch batch;
args->_batch = &batch;
glm::mat4 projMat;
Transform viewMat;
args->_viewFrustum->evalProjectionMatrix(projMat);
args->_viewFrustum->evalViewTransform(viewMat);
batch.setProjectionTransform(projMat);
batch.setViewTransform(viewMat);
args->_renderMode = RenderArgs::NORMAL_RENDER_MODE;
@ -330,7 +340,7 @@ template <> void render::jobRun(const DrawTransparent& job, const SceneContextPo
int bufferCount = 0;
buffers[bufferCount++] = GL_COLOR_ATTACHMENT1;
buffers[bufferCount++] = GL_COLOR_ATTACHMENT2;
theBatch._glDrawBuffers(bufferCount, buffers);
batch._glDrawBuffers(bufferCount, buffers);
args->_alphaThreshold = MOSTLY_OPAQUE_THRESHOLD;
}
@ -340,7 +350,7 @@ template <> void render::jobRun(const DrawTransparent& job, const SceneContextPo
GLenum buffers[3];
int bufferCount = 0;
buffers[bufferCount++] = GL_COLOR_ATTACHMENT0;
theBatch._glDrawBuffers(bufferCount, buffers);
batch._glDrawBuffers(bufferCount, buffers);
args->_alphaThreshold = TRANSPARENT_ALPHA_THRESHOLD;
}
@ -395,8 +405,16 @@ template <> void render::jobRun(const DrawBackground& job, const SceneContextPoi
inItems.push_back(id);
}
RenderArgs* args = renderContext->args;
gpu::Batch theBatch;
args->_batch = &theBatch;
gpu::Batch batch;
args->_batch = &batch;
glm::mat4 projMat;
Transform viewMat;
args->_viewFrustum->evalProjectionMatrix(projMat);
args->_viewFrustum->evalViewTransform(viewMat);
batch.setProjectionTransform(projMat);
batch.setViewTransform(viewMat);
renderItems(sceneContext, renderContext, inItems);
args->_context->render((*args->_batch));
args->_batch = nullptr;