Merge pull request #5031 from huffman/world-box-batch

Team teaching - render world box using batches
This commit is contained in:
Brad Hefta-Gaub 2015-06-03 12:43:52 -07:00
commit 136336b652
3 changed files with 27 additions and 29 deletions

View file

@ -3190,7 +3190,7 @@ namespace render {
template <> void payloadRender(const WorldBoxRenderData::Pointer& stuff, RenderArgs* args) {
if (args->_renderMode != CAMERA_MODE_MIRROR && Menu::getInstance()->isOptionChecked(MenuOption::Stats)) {
PerformanceTimer perfTimer("worldBox");
renderWorldBox();
renderWorldBox(args);
// FIXME: there's currently a bug in the new render engine, if this origin dot is rendered out of view it will
// screw up the state of textures on models so they all end up rendering in the incorrect tint/color/texture

View file

@ -33,9 +33,9 @@
using namespace std;
void renderWorldBox() {
return;
void renderWorldBox(RenderArgs* renderArgs) {
auto geometryCache = DependencyManager::get<GeometryCache>();
auto batch = renderArgs->_batch;
// Show edge of world
glm::vec3 red(1.0f, 0.0f, 0.0f);
@ -43,36 +43,32 @@ void renderWorldBox() {
glm::vec3 blue(0.0f, 0.0f, 1.0f);
glm::vec3 grey(0.5f, 0.5f, 0.5f);
glDisable(GL_LIGHTING);
glLineWidth(1.0);
geometryCache->renderLine(glm::vec3(0, 0, 0), glm::vec3(TREE_SCALE, 0, 0), red);
geometryCache->renderLine(glm::vec3(0, 0, 0), glm::vec3(0, TREE_SCALE, 0), green);
geometryCache->renderLine(glm::vec3(0, 0, 0), glm::vec3(0, 0, TREE_SCALE), blue);
geometryCache->renderLine(glm::vec3(0, 0, TREE_SCALE), glm::vec3(TREE_SCALE, 0, TREE_SCALE), grey);
geometryCache->renderLine(glm::vec3(TREE_SCALE, 0, TREE_SCALE), glm::vec3(TREE_SCALE, 0, 0), grey);
geometryCache->renderLine(*batch, glm::vec3(0, 0, 0), glm::vec3(TREE_SCALE, 0, 0), red);
geometryCache->renderLine(*batch, glm::vec3(0, 0, 0), glm::vec3(0, TREE_SCALE, 0), green);
geometryCache->renderLine(*batch, glm::vec3(0, 0, 0), glm::vec3(0, 0, TREE_SCALE), blue);
geometryCache->renderLine(*batch, glm::vec3(0, 0, TREE_SCALE), glm::vec3(TREE_SCALE, 0, TREE_SCALE), grey);
geometryCache->renderLine(*batch, glm::vec3(TREE_SCALE, 0, TREE_SCALE), glm::vec3(TREE_SCALE, 0, 0), grey);
// Draw meter markers along the 3 axis to help with measuring things
const float MARKER_DISTANCE = 1.0f;
const float MARKER_RADIUS = 0.05f;
glEnable(GL_LIGHTING);
glPushMatrix();
glTranslatef(MARKER_DISTANCE, 0, 0);
geometryCache->renderSphere(MARKER_RADIUS, 10, 10, red);
glPopMatrix();
glPushMatrix();
glTranslatef(0, MARKER_DISTANCE, 0);
geometryCache->renderSphere(MARKER_RADIUS, 10, 10, green);
glPopMatrix();
glPushMatrix();
glTranslatef(0, 0, MARKER_DISTANCE);
geometryCache->renderSphere(MARKER_RADIUS, 10, 10, blue);
glPopMatrix();
glPushMatrix();
glTranslatef(MARKER_DISTANCE, 0, MARKER_DISTANCE);
geometryCache->renderSphere(MARKER_RADIUS, 10, 10, grey);
glPopMatrix();
Transform transform;
transform.setTranslation(glm::vec3(MARKER_DISTANCE, 0, 0));
batch->setModelTransform(transform);
geometryCache->renderSphere(*batch, MARKER_RADIUS, 10, 10, red);
transform.setTranslation(glm::vec3(0, MARKER_DISTANCE, 0));
batch->setModelTransform(transform);
geometryCache->renderSphere(*batch, MARKER_RADIUS, 10, 10, green);
transform.setTranslation(glm::vec3(0, 0, MARKER_DISTANCE));
batch->setModelTransform(transform);
geometryCache->renderSphere(*batch, MARKER_RADIUS, 10, 10, blue);
transform.setTranslation(glm::vec3(MARKER_DISTANCE, 0, MARKER_DISTANCE));
batch->setModelTransform(transform);
geometryCache->renderSphere(*batch, MARKER_RADIUS, 10, 10, grey);
}
// Return a random vector of average length 1

View file

@ -16,10 +16,12 @@
#include <glm/gtc/quaternion.hpp>
#include <QSettings>
#include "RenderArgs.h"
float randFloat();
const glm::vec3 randVector();
void renderWorldBox();
void renderWorldBox(RenderArgs* renderArgs);
int widthText(float scale, int mono, char const* string);
void drawText(int x, int y, float scale, float radians, int mono,