コード例 #1
0
ファイル: qgsmeshlayerrenderer.cpp プロジェクト: dbaston/QGIS
bool QgsMeshLayerRenderer::render()
{
  renderMesh( mNativeMeshSymbol, mNativeMesh.faces ); // native mesh
  renderMesh( mTriangularMeshSymbol, mTriangularMesh.triangles() ); // triangular mesh

  return true;
}
コード例 #2
0
void SceneGalaxy::Render()
{
    // Render VBO here
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    //Temp variables
    Mtx44 translate, rotate, scale;
    Mtx44 MVP;

    //These will be replaced by matrix stack soon
    Mtx44 model;
    Mtx44 view;
    Mtx44 projection;

    //Set all matrices to identity
    translate.SetToIdentity();
    rotate.SetToIdentity();
    scale.SetToIdentity();
    model.SetToIdentity();

    //Set view matrix using camera settings
    viewStack.LoadIdentity();
    viewStack.LookAt(
        camera.position.x, camera.position.y, camera.position.z,
        camera.target.x, camera.target.y, camera.target.z,
        camera.up.x, camera.up.y, camera.up.z
    );

    //Set projection matrix to perspective mode
    projection.SetToPerspective(45.0f, 4.0f / 3.0f, 0.1f, 10000.0f); //FOV, Aspect Ratio, Near plane, Far plane
    modelStack.PushMatrix();
    modelStack.Translate(light[0].position.x, light[0].position.y, light[0].position.z);
    modelStack.Scale(0.1f, 0.1f, 0.1f);
    renderMesh(meshList[GEO_LIGHTBALL], false);
    modelStack.PopMatrix();


    /*modelStack.PushMatrix();
    renderMesh(meshList[GEO_AXES], false);
    modelStack.PopMatrix();*/

    modelStack.PushMatrix();
    modelStack.Translate(0, 496.9f, 0);
    RenderSkybox();
    modelStack.PopMatrix();

    RenderXwing();
    RenderAsteroid();
    RenderMissile();
    QuestDetail();

    RenderTextOnScreen(meshList[GEO_TEXT], "+", Color(0, 1, 0), 3, 13.1, 9);
    std::stringstream playerPos;
    playerPos << "X = " << camPosX << " Y = " << camPosY << " Z = " << camPosz;
    //RenderTextOnScreen(meshList[GEO_TEXT], playerPos.str(), Color(1, 0, 0), 2, 0, 18);
    std::stringstream ss;
    ss << "FPS:" << fps << "         " << playerPos.str();
    RenderTextOnScreen(meshList[GEO_TEXT], ss.str(), Color(0, 1, 0), 3, 0, 19);

}
コード例 #3
0
void SceneGalaxy::QuestDetail()
{
    if (QuestDetailShown == false)
    {
        Mtx44 ortho;
        glDisable(GL_DEPTH_TEST);
        ortho.SetToOrtho(0, 80, 0, 60, -10, 10); //size of screen UI
        projectionStack.PushMatrix();
        projectionStack.LoadMatrix(ortho);
        viewStack.PushMatrix();
        viewStack.LoadIdentity(); //No need camera for ortho mode
        modelStack.PushMatrix();
        modelStack.LoadIdentity(); //Reset modelStack
        modelStack.Translate(37.5, 27.5, -2);
        modelStack.Scale(30, 50, 10);
        modelStack.Rotate(90, 1, 0, 0);
        renderMesh(meshList[GEO_BLACKSCREEN], false);
        projectionStack.PopMatrix();
        viewStack.PopMatrix();
        modelStack.PopMatrix();
        glEnable(GL_DEPTH_TEST);

        if (Application::IsKeyPressed('E'))
        {
            QuestDetailShown = true;
        }
    }
}
コード例 #4
0
ファイル: ObjGlWidget.cpp プロジェクト: undernones/particles
void
ObjGlWidget::renderAll()
{
    if (mMesh != nullptr) {
        renderMesh(*mMesh);
    }
}
コード例 #5
0
void StandardRenderer::render(ID3D11Device* pd3dDevice, ID3D11DeviceContext* pd3dImmediateContext, GameObject* gameObject)
{
	// simplest possible renderer

	// get world matrix
	XMMATRIX worldMatrix = gameObject->transformMatrix;

	// only supports one parent at moment
	if (gameObject->parent)
	{
		// for some reason it breaks if you remove this line...
		// it could be something to do with the warning C4316
		XMMATRIX parentTransform = gameObject->parent->transformMatrix;

		worldMatrix *= parentTransform;
	}

	GameContext * gameContext = gameObject->gameContext;

	XMMATRIX viewMatrix = gameContext->renderingContext->primaryCamera->viewMatrix;
	XMMATRIX projectionMatrix = gameContext->renderingContext->projectionMatrix;
	XMMATRIX matWorldViewProjection = worldMatrix * viewMatrix * projectionMatrix;

	// update constant buffers
	gameObject->shaderPair->updateBuffersPerObject(pd3dImmediateContext, worldMatrix, matWorldViewProjection, XMFLOAT4(1, 1, 1, 1));

	setMesh(pd3dImmediateContext, gameObject->sharedMesh);

	renderMesh(pd3dImmediateContext, gameObject->sharedMesh);
}
コード例 #6
0
ファイル: Character.cpp プロジェクト: emint/sd
void Character::render(float framerate) {
  //move internal animation timer forward
  updateTime(framerate);

  renderMesh((ResourceManager::get())->getMesh("spirit"),
      (ResourceManager::get())->getCharacterShader());
}
コード例 #7
0
ファイル: Mesh.cpp プロジェクト: webanck/GigaVoxels
void Mesh::render() {	
	glUseProgram(program);
	if (program != 0) {
		//glUniform1i(glGetUniformLocation(program, "samplerd"), 2);
	}
	for (int i = 0; i < meshes.size(); i++) {	
		/*if (program != 0) {
			if (hasTexture(i)) {
			glUniform1i(glGetUniformLocation(program, "hasTex"), 1);
				 	GV_CHECK_GL_ERROR();
			} else {
				glUniform1i(glGetUniformLocation(program, "hasTex"), 0);
			}
		

			glUniform3f(glGetUniformLocation(program, "lightPos"), lightPos[0], lightPos[1], lightPos[2]);
			GV_CHECK_GL_ERROR();
			glUniform4f(glGetUniformLocation(program, "ambientLight"), meshes[i].ambient[0], meshes[i].ambient[1], meshes[i].ambient[2], meshes[i].ambient[3]);
			GV_CHECK_GL_ERROR();
			glUniform4f(glGetUniformLocation(program, "specularColor"), meshes[i].specular[0], meshes[i].specular[1], meshes[i].specular[2], meshes[i].ambient[3]);
			GV_CHECK_GL_ERROR();
			glUniform1f(glGetUniformLocation(program, "shininess"), meshes[i].shininess);	
		}	*/
			GV_CHECK_GL_ERROR();
	    	renderMesh(i);	
	    	GV_CHECK_GL_ERROR();			
	}
	glUseProgram(0);
	GV_CHECK_GL_ERROR();
}
コード例 #8
0
ファイル: model.cpp プロジェクト: i25ffz/cal3d-android
void Model::onRender()
{
  // set global OpenGL states
  glEnable(GL_DEPTH_TEST);
  glShadeModel(GL_SMOOTH);

//// DEBUG: CLOTH SIM
/*
  static CalVector spherePosition;
  spherePosition.set(Sphere.x, Sphere.y, Sphere.z);
  static float sphereRadius = 15.0f;

//  m_calModel->getSpringSystem()->setSphere(spherePosition.x, spherePosition.y, spherePosition.z, sphereRadius);

  glColor3f(1.0f, 1.0f, 1.0f);
  glBegin(GL_LINE_STRIP);
    glVertex3f(spherePosition.x + sphereRadius, spherePosition.y, spherePosition.z);
    glVertex3f(spherePosition.x, spherePosition.y + sphereRadius, spherePosition.z);
    glVertex3f(spherePosition.x - sphereRadius, spherePosition.y, spherePosition.z);
    glVertex3f(spherePosition.x, spherePosition.y - sphereRadius, spherePosition.z);

    glVertex3f(spherePosition.x + sphereRadius, spherePosition.y, spherePosition.z);
    glVertex3f(spherePosition.x, spherePosition.y, spherePosition.z + sphereRadius);
    glVertex3f(spherePosition.x - sphereRadius, spherePosition.y, spherePosition.z);
    glVertex3f(spherePosition.x, spherePosition.y, spherePosition.z - sphereRadius);

    glVertex3f(spherePosition.x + sphereRadius, spherePosition.y, spherePosition.z);

    glVertex3f(spherePosition.x, spherePosition.y + sphereRadius, spherePosition.z);
    glVertex3f(spherePosition.x, spherePosition.y, spherePosition.z + sphereRadius);
    glVertex3f(spherePosition.x, spherePosition.y - sphereRadius, spherePosition.z);
    glVertex3f(spherePosition.x, spherePosition.y, spherePosition.z - sphereRadius);
    glVertex3f(spherePosition.x, spherePosition.y + sphereRadius, spherePosition.z);
  glEnd();
*/
//// DEBUG END

  //CalSkeleton *pCalSkeleton = m_calModel->getSkeleton();

  // Note :
  // You have to call coreSkeleton.calculateBoundingBoxes(calCoreModel)
  // during the initialisation (before calModel.create(calCoreModel))
  // if you want to use bounding boxes.

  //m_calModel->getSkeleton()->calculateBoundingBoxes();

  // Note:
  // Uncomment the next lines if you want to test the experimental collision system.
  // Also remember that you need to call calculateBoundingBoxes()

  //m_calModel->getSpringSystem()->setForceVector(CalVector(0.0f,0.0f,0.0f));
  //m_calModel->getSpringSystem()->setCollisionDetection(true);

  renderMesh(theMenu.isWireframe(), theMenu.isLight());

  // clear global OpenGL states
  glDisable(GL_DEPTH_TEST);
}
コード例 #9
0
ファイル: camera.cpp プロジェクト: Zilby/Stuy-Stuff
void Camera::renderMeshes(World *w, Surface *s) {
	for(int i = 0; i < w->meshes.size(); i++) {
		//Skip nulls
		if(!w->meshes[i])
			continue;

		renderMesh(w->meshes[i], s);
	}
}
コード例 #10
0
ファイル: HdrApp.cpp プロジェクト: hzhamad/CG-MV
void HdrApp::renderRgb()
{
	// Render the skybow and the mesh
	rtRgb->beginCapture();
		getRenderer()->clearBuffer();
		cam->useLeft();
		getRenderer()->renderSkyBox(cubeMapRgb);
		renderMesh(textureRgb, cubeMapRgb);
	rtRgb->endCapture();
}
コード例 #11
0
void Table::draw(VSShaderLib shader, GLint pvm_uniformId, GLint vm_uniformId, GLint normal_uniformId)
{
	loadMesh(_meshes.at(0), shader);
	pushMatrix(MODEL);

	translate(MODEL, _position.getX(), _position.getY(), _position.getZ());
	scale(MODEL, 9.0f, 0.0000001f, 9.0f);

	renderMesh(_meshes.at(0), pvm_uniformId, vm_uniformId, normal_uniformId);
	popMatrix(MODEL);
}
コード例 #12
0
ファイル: Cup.cpp プロジェクト: MarcoSDomingues/MicroMachines
void Cup::draw(VSShaderLib shader, GLint pvm_uniformId, GLint vm_uniformId, GLint normal_uniformId)
{
	pushMatrix(MODEL);

	translate(MODEL, _position.getX(), _position.getY(), _position.getZ());

	loadMesh(_meshes.at(0), shader);
	pushMatrix(MODEL);
	scale(MODEL,0.5f, 10.0f, 0.5f);
	renderMesh(_meshes.at(0), pvm_uniformId, vm_uniformId, normal_uniformId);
	popMatrix(MODEL);

	loadMesh(_meshes.at(1), shader);
	pushMatrix(MODEL);
	translate(MODEL, 0.0,-0.5,0.0);
	scale(MODEL, 0.5f, 0.01f, 0.5f);
	renderMesh(_meshes.at(1), pvm_uniformId, vm_uniformId, normal_uniformId);
	popMatrix(MODEL);

	popMatrix(MODEL);
}
コード例 #13
0
void Pause::draw(VSShaderLib shader, GLint pvm_uniformId, GLint vm_uniformId, GLint normal_uniformId)
{
	GameObject::drawTextures();
	loadMesh(_meshes.at(0), shader);
	pushMatrix(MODEL);

	translate(MODEL, _position.getX(), _position.getY(), _position.getZ());
	scale(MODEL, 5.0f, 5.0f, 1.0f);

	renderMesh(_meshes.at(0), pvm_uniformId, vm_uniformId, normal_uniformId);
	popMatrix(MODEL);
}
コード例 #14
0
ファイル: renderer.cpp プロジェクト: apjagdale/GearVRf
void Renderer::renderRenderData(RenderState& rstate, RenderData* render_data) {
    if (!(rstate.render_mask & render_data->render_mask()))
        return;

    // Set the states
    setRenderStates(render_data, rstate);
    if (render_data->mesh() != 0) {
        GL(renderMesh(rstate, render_data));
    }
    // Restoring to Default.
    // TODO: There's a lot of redundant state changes. If on every render face culling is being set there's no need to
    // restore defaults. Possibly later we could add a OpenGL state wrapper to avoid redundant api calls.
    restoreRenderStates(render_data);
}
コード例 #15
0
ファイル: ModelGL.cpp プロジェクト: zerkaner/Meshes
/* Render this model. Depending on mode, different render functions are called. */
void ModelGL::Render () {
  if (_renderMode == OFF) return;

  for (int g = 0; g < _nrGeosets; g ++) {
    if (_geosets[g].enabled) {
      switch (_renderMode) {
        case DIRECT  : renderDirect (_geosets[g]);  break;
        case POINTS  : renderPoints (_geosets[g]);  break;
        case MESH    : renderMesh   (_geosets[g]);  break;
        case VBO     : renderVBO    (_VBOs[g]);     break;
      } 
    }
  }
}
コード例 #16
0
void SceneGalaxy::RenderXwing()
{
    if (renderXWing == true)
    {
        modelStack.PushMatrix();
        modelStack.Translate(XWing.x, XWing.y, XWing.z);
        modelStack.Rotate(180, 0, 1, 0);
        modelStack.Rotate(rotateXWing, 0, 0, 1);
        modelStack.Rotate(camera.rotateChar, 0, 1, 0);
        modelStack.Scale(2.2f, 2.2f, 2.2f);
        renderMesh(meshList[GEO_XWING], true);
        modelStack.PopMatrix();
    }

}
コード例 #17
0
void Broccoli::draw(VSShaderLib shader, GLint pvm_uniformId, GLint vm_uniformId, GLint normal_uniformId)
{
	GameObject::drawTextures();
	loadMesh(_meshes.at(0), shader);
	pushMatrix(MODEL);

	translate(MODEL, _position.getX(), _position.getY(), _position.getZ());
	
	rotate(MODEL, _angle, _dir.getX(), _dir.getY(), _dir.getZ());
	translate(MODEL, -0.5, 0, 0);
	scale(MODEL, 1.0f, 1.0f, 0.0001f);

	renderMesh(_meshes.at(0), pvm_uniformId, vm_uniformId, normal_uniformId);
	popMatrix(MODEL);
}
コード例 #18
0
void ModelRendererGl::render(Model *model,int renderMode) {
	//assertions
	assert(rendering);
	assertGl();

	//if(model->getIsStaticModel()) printf("In [%s::%s Line: %d] filename [%s] is static about to render...\n",__FILE__,__FUNCTION__,__LINE__,model->getFileName().c_str());

	//render every mesh
	//if(model->getIsStaticModel() == true) {
	for(uint32 i = 0;  i < model->getMeshCount(); ++i) {
		renderMesh(model->getMeshPtr(i),renderMode);
	}
	//}
	//assertions
	assertGl();
}
コード例 #19
0
void SceneGalaxy::RenderSkybox()
{
    if (renderSkybox == true)
    {
        modelStack.PushMatrix();
        modelStack.Translate(0, 0, -498);
        modelStack.Rotate(90, 1, 0, 0);
        modelStack.Rotate(180, 0, 1, 0);
        modelStack.Scale(1000, 1000, 1000);
        renderMesh(meshList[GEO_GALAXYBACK], false);
        modelStack.PopMatrix();

        modelStack.PushMatrix();
        modelStack.Translate(0, 498, 0);
        modelStack.Rotate(-90, 0, 1, 0);
        modelStack.Rotate(180, 1, 0, 0);
        modelStack.Scale(1000, 1000, 1000);
        renderMesh(meshList[GEO_GALAXYTOP], false);
        modelStack.PopMatrix();

        modelStack.PushMatrix();
        modelStack.Translate(-498, 0, 0);
        modelStack.Rotate(-90, 0, 0, 1);
        modelStack.Rotate(90, 0, 1, 0);
        modelStack.Rotate(180, 0, 1, 0);
        modelStack.Scale(1000, 1000, 1000);
        renderMesh(meshList[GEO_GALAXYLEFT], false);
        modelStack.PopMatrix();

        modelStack.PushMatrix();
        modelStack.Translate(498, 0, 0);
        modelStack.Rotate(90, 0, 0, 1);
        modelStack.Rotate(90, 0, 1, 0);
        modelStack.Scale(1000, 1000, 1000);
        renderMesh(meshList[GEO_GALAXYFRONT], false);
        modelStack.PopMatrix();

        modelStack.PushMatrix();
        modelStack.Translate(0, -498, 0);
        modelStack.Rotate(-90, 0, 1, 0);
        modelStack.Scale(1000, 1000, 1000);
        renderMesh(meshList[GEO_GALAXYBOTTOM], false);
        modelStack.PopMatrix();

        modelStack.PushMatrix();
        modelStack.Translate(0, 0, 498);
        modelStack.Rotate(180, 0, 1, 0);
        modelStack.Rotate(90, 1, 0, 0);
        modelStack.Rotate(180, 0, 1, 0);
        modelStack.Scale(1000, 1000, 1000);
        renderMesh(meshList[GEO_GALAXYRIGHT], false);
        modelStack.PopMatrix();
    }
}
コード例 #20
0
void SceneGalaxy::RenderMissile()
{

    if (shootMissile == true)
    {
        for (int i = 0; i < missile.Missiles; i++)
        {
            modelStack.PushMatrix();
            missilePos = missile.Capacity[i].getPositionOfMissile();
            modelStack.Translate((missilePos.x) , (missilePos.y), (missilePos.z));
            modelStack.Scale(4.f, 4.f, 4.f);
            modelStack.Rotate(camera.rotateChar, 0, 1, 0);
            renderMesh(meshList[GEO_MISSILE], true);
            modelStack.PopMatrix();
        }
    }
}
コード例 #21
0
ファイル: renderer.cpp プロジェクト: yanzhao571/GearVRf
void Renderer::renderRenderData(RenderState& rstate, RenderData* render_data) {

    if (!rstate.render_mask || !render_data->render_mask())
        return;

    if (render_data->offset()) {
        GL(glEnable (GL_POLYGON_OFFSET_FILL));
        GL(glPolygonOffset(render_data->offset_factor(),
                    render_data->offset_units()));
    }
    if (!render_data->depth_test()) {
        GL(glDisable (GL_DEPTH_TEST));
    }
    if (!render_data->alpha_blend()) {
        GL(glDisable (GL_BLEND));
    }
    if( render_data->alpha_to_coverage()) {
        GL(glEnable(GL_SAMPLE_ALPHA_TO_COVERAGE));
        GL(glSampleCoverage(render_data->sample_coverage(),render_data->invert_coverage_mask()));
    }
    if (render_data->mesh() != 0) {
        GL(renderMesh(rstate, render_data));
    }

    // Restoring to Default.
    // TODO: There's a lot of redundant state changes. If on every render face culling is being set there's no need to
    // restore defaults. Possibly later we could add a OpenGL state wrapper to avoid redundant api calls.
    if (render_data->cull_face() != RenderData::CullBack) {
        GL(glEnable (GL_CULL_FACE));
        GL(glCullFace (GL_BACK));
    }

    if (render_data->offset()) {
        GL(glDisable (GL_POLYGON_OFFSET_FILL));
    }
    if (!render_data->depth_test()) {
        GL(glEnable (GL_DEPTH_TEST));
    }
    if (!render_data->alpha_blend()) {
        GL(glEnable (GL_BLEND));
    }
    if (render_data->alpha_to_coverage()) {
        GL(glDisable(GL_SAMPLE_ALPHA_TO_COVERAGE));
    }
}
コード例 #22
0
ファイル: Assignment3.cpp プロジェクト: Li-Zhaoyuan/KappaCOMG
void Assignment3::RenderSkybox()
{
	modelStack.PushMatrix();
	modelStack.Translate(0, 0, -498);
	modelStack.Rotate(90, 1, 0, 0);
	modelStack.Scale(1000, 1000, 1000);
	renderMesh(meshList[GEO_FRONT], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Translate(0, 498, 0);
	modelStack.Rotate(-90, 0, 1, 0);
	modelStack.Rotate(180, 1, 0, 0);
	modelStack.Scale(1000, 1000, 1000);
	renderMesh(meshList[GEO_TOP], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Translate(-498, 0, 0);
	modelStack.Rotate(-90, 0, 0, 1);
	modelStack.Rotate(90, 0, 1, 0);
	modelStack.Scale(1000, 1000, 1000);
	renderMesh(meshList[GEO_LEFT], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Translate(498, 0, 0);
	modelStack.Rotate(90, 0, 0, 1);
	modelStack.Rotate(-90, 0, 1, 0);
	modelStack.Scale(1000, 1000, 1000);
	renderMesh(meshList[GEO_RIGHT], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Translate(0, -498, 0);
	modelStack.Rotate(-90, 0, 1, 0);
	modelStack.Scale(1000, 1000, 1000);
	renderMesh(meshList[GEO_BOTTOM], false);
	modelStack.PopMatrix();

	modelStack.PushMatrix();
	modelStack.Translate(0, 0, 498);
	modelStack.Rotate(180, 0, 1, 0);
	modelStack.Rotate(90, 1, 0, 0);
	modelStack.Scale(1000, 1000, 1000);
	renderMesh(meshList[GEO_BACK], false);
	modelStack.PopMatrix();
}
コード例 #23
0
    //------------------------------------------------------------------------------
    const RenderMesh* RenderMeshManager::CreateRenderMesh(PolygonType polygonType, const VertexFormat& vertexFormat, IndexFormat indexFormat, u32 numVertices, u32 numIndices, const Sphere& boundingSphere,
                                                          std::unique_ptr<const u8[]> vertexData, u32 vertexDataSize, std::unique_ptr<const u8[]> indexData, u32 indexDataSize, bool shouldBackupData,
                                                          std::vector<Matrix4> inverseBindPoseMatrices) noexcept
    {
        RenderMeshUPtr renderMesh(new RenderMesh(polygonType, vertexFormat, indexFormat, numVertices, numIndices, boundingSphere, shouldBackupData, std::move(inverseBindPoseMatrices)));

        auto rawRenderMesh = renderMesh.get();
        
        PendingLoadCommand loadCommand;
        loadCommand.m_renderMesh = rawRenderMesh;
        loadCommand.m_vertexData = std::move(vertexData);
        loadCommand.m_vertexDataSize = vertexDataSize;
        loadCommand.m_indexData = std::move(indexData);
        loadCommand.m_indexDataSize = indexDataSize;
        
        std::unique_lock<std::mutex> lock(m_mutex);
        m_renderMeshes.push_back(std::move(renderMesh));
        m_pendingLoadCommands.push_back(std::move(loadCommand));
        
        return rawRenderMesh;
    }
コード例 #24
0
ファイル: Model.cpp プロジェクト: 4nakin/Aquaria_clean
void Model::onRender()
{
	/*
	glClearDepth(1.0f);
	core->resize3D();
	*/

	glEnable(GL_DEPTH_TEST);							// Enables Depth Testing
	glDepthFunc(GL_LEQUAL);								// The Type Of Depth Testing To Do

	glDisable(GL_TEXTURE_2D);
	glBindTexture(GL_TEXTURE_2D, 0);

	glShadeModel(GL_SMOOTH);

	// check if we need to render the mesh
	renderMesh(false, false);
	
	glEnable(GL_TEXTURE_2D);

	glDisable(GL_DEPTH_TEST);

}
コード例 #25
0
ファイル: VRMeshEditor.cpp プロジェクト: VisualIdeation/Vrui
void VRMeshEditor::display(GLContextData& contextData) const
{
    /* Retrieve context entry: */
    DataItem* dataItem=contextData.retrieveDataItem<DataItem>(this);

    /* Render mesh: */
    glPushAttrib(GL_ENABLE_BIT|GL_POLYGON_BIT);
    switch(renderMode)
    {
    case SHADED:
        glEnable(GL_LIGHTING);
        glEnable(GL_NORMALIZE);
        glDisable(GL_CULL_FACE);
        glCullFace(GL_BACK);
        glFrontFace(GL_CCW);
        glLightModeli(GL_LIGHT_MODEL_TWO_SIDE,GL_TRUE);
        glMaterial(GLMaterialEnums::FRONT,meshMaterial);
        renderMesh(dataItem);
        break;

    case WIREFRAME:
        glDisable(GL_LIGHTING);
        glColor3f(0.0f,1.0f,0.0f);
        renderMeshWireframe(*mesh,1.0f,0.0f);
        break;
    }
    glPopAttrib();

    /* Render all draggers: */
    for(DraggerList::const_iterator dIt=draggers.begin(); dIt!=draggers.end(); ++dIt)
        (*dIt)->glRenderAction(contextData);

    /* Render the morph box: */
    if(morphBox!=0)
        morphBox->glRenderAction(contextData);
}
コード例 #26
0
void AssetRenderer::renderMesh(const mat4f &cameraPerspective, const ml::D3D11TriMesh &mesh, const vec3f &color)
{
    renderMesh(cameraPerspective, mat4f::identity(), mesh, color);
}
コード例 #27
0
void AssetRenderer::renderCylinder(const mat4f &cameraPerspective, const vec3f &p0, const vec3f &p1, const vec3f &color)
{
    renderMesh(cameraPerspective, mat4f::translation(p0) * mat4f::face(vec3f::eZ, p1 - p0) * mat4f::scale(1.0f, 1.0f, vec3f::dist(p0, p1)), m_cylinder, color);
}
コード例 #28
0
ファイル: game.cpp プロジェクト: napoleon89/Pawprint
void GameState::renderModel(RenderContext *render_context, ModelWrapper *model, Vec3 position, Vec3 scale, Vec4 color, float roughness, float metallic) {
	for(u32 i = 0; i < model->mesh_count; i++) {
		renderMesh(render_context, &model->meshes[i], position, scale, color * model->meshes[i].color, roughness, metallic);
	}
}
コード例 #29
0
void AssetRenderer::renderBox(const mat4f &cameraPerspective, const vec3f &center, float radius, const vec3f &color)
{
    renderMesh(cameraPerspective, mat4f::translation(center) * mat4f::scale(radius), m_box, color);
}
コード例 #30
0
ファイル: game.cpp プロジェクト: napoleon89/Pawprint
void GameState::renderGeometry(PlatformWindow *window, RenderContext *render_context, InputManager *input, Assets *assets, Platform *platform,  f32 delta, bool can_override_shader) {

	render_context->bindTexture2D(&assets->debug, 0);
	for(u32 z = 0; z < 30; z++) {
		for(u32 x = 0; x < 30; x++) {
			Vec3 position = world_offset + Vec3(CHUNK_SIZE * x, -1.0f * x, CHUNK_SIZE * z) + Vec3(CHUNK_SIZE *0.5f, 0.0f, CHUNK_SIZE * 0.5f);
			Vec4 color = Vec4((f32)x / 3.0f, 0.0f, (f32)z / 3.0f, 1.0f);
			// renderMesh(render_context, &test_cube_mesh, position, Vec3(CHUNK_SIZE * 0.5f, 1.0f, CHUNK_SIZE * 0.5f), color, 1.0f, 0.0f);
		}
	}

	renderMesh(render_context, &terrain_mesh, Vec3() + world_offset, Vec3(1.0f), Vec4(1.0f), 1.0f, 0.0f);

	// renderMesh(render_context, &test_cube_mesh, Vec3(0.0f, 0.0f, 0.0f), Vec3(6.0f, 3.0f, 6.0f), Vec4(0.0f, 1.0f, 0.0f, 1.0f), 1.0f, 0.0f);
	int sphere_count = 10;
	for(int y = 0; y < sphere_count; y++) {
		float metallic = y * (1.0f / (f32)sphere_count);
		for(int x = 0; x < sphere_count; x++) {
			float roughness = x * (1.0f / (f32)sphere_count);
			// renderMesh(render_context, &test_sphere_mesh, Vec3(x * 2.0f, y * 2.0f, 0.0f), Vec3(1.0f), Vec4(1.0f), roughness, metallic);
		}
	}
	

	Vec3 model_position = Vec3(0.0f, 4.0f, 0.0f);
	for(u32 i = 0; i < assets->chr_old.voxel_count; i++) {
		Voxel &voxel = assets->chr_old.voxels[i];
		Vec4 color = Vec4();
		u32 palette_color = assets->chr_old.palette[voxel.color_index];
		f32 d = 1.0f / 255.0f;
		for(int b = 0; b < 4; b++) {
			color.xyzw[b] = (f32)GetByte(b, palette_color) * d;
		}
		// renderMesh(render_context, &test_cube_mesh, model_position + Vec3(voxel.x, voxel.z, voxel.y), Vec3(0.5f), color, 1.0f, 0.0f);
	}

	// for(u32 z = 0; z < MAP_SIZE; z++) {
	// 	for(u32 x = 0; x < MAP_SIZE; x++) {
	// 		u8 y = g_map[z][x];
	// 		Vec3 position = Vec3(x, y, z);
	// 		renderMesh(render_context, &test_cube_mesh, position, Vec3(0.5f), g_color_lookups[y], 1.0f, 0.0f);
	// 	}
	// }

	// renderModel(render_context, &assets->model, Vec3(-5.0f, 0.0f, 0.0f), Vec3(0.01f), Vec4(1.0f), 1.0f, 0.0f);
	// renderModel(render_context, &assets->tree2, Vec3(-10.0f, 0.0f, 0.0f), Vec3(0.1f), Vec4(1.0f), 1.0f, 0.0f);
	// renderModel(render_context, &assets->trees, Vec3(-10.0f, 0.0f, 0.0f), Vec3(0.1f), Vec4(1.0f), 1.0f, 0.0f);
	// for(int i = 0; i < 4; i++)
	// 	for(int j = 0; j < 4; j++)
	// 		renderModel(render_context, &assets->well, Vec3(-10.0f + (j * 2), -0.9f, i * 2), Vec3(1.0f), Vec4(1.0f), 1.0f, 0.0f);

	// renderMesh(render_context, &test_cube_mesh, Vec3(0.0f, -1.0f, 0.0f), Vec3(30.0f, 1.0f, 30.0f), Vec4(1.0f), 1.0f, 0.0f);

	if(can_override_shader)
		render_context->bindShader(&assets->shaders.statics);
	// renderStaticMesh(render_context, &assets->test_static, draw_position, Vec3(1.0f), Vec4(1.0f), 1.0f, 0.0f);

	for(u32 i = 0; i < static_mesh_reference_count; i++) {
		StaticMeshReference &reference = static_mesh_references[i];
		StaticMeshData *data = &assets->static_meshes.meshes[reference.index];
		// renderStaticMesh(render_context, data, reference.transform,  Vec4(1.0f), 1.0f, 0.0f);
	}
	if(can_override_shader)
		render_context->bindShader(&assets->shaders.skinned);
	renderSkinnedMesh(render_context, &assets->skel_dude, npc_position, Vec3(0.025f), Vec4(1.0f), 1.0f, 0.0f);
}