Ejemplo n.º 1
0
// Sets up OpenGL
void _Graphics::SetupOpenGL() {

	// Anisotropic filtering
	if(SDL_GL_ExtensionSupported("GL_EXT_texture_filter_anisotropic")) {
		GLfloat MaxAnisotropy;
		glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &MaxAnisotropy);

		if(Anisotropy > (int)MaxAnisotropy)
			Anisotropy = (int)MaxAnisotropy;
	}

	// Default state
	glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
	glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
	glCullFace(GL_BACK);
	glEnable(GL_CULL_FACE);
	glDisable(GL_DEPTH_TEST);
	glEnable(GL_BLEND);
	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
	glEnableVertexAttribArray(0);

	// Set ortho matrix
	Ortho = glm::ortho(0.0f, (float)WindowSize.x, (float)WindowSize.y, 0.0f, -1.0f, 1.0f);

	// Build vertex buffers
	BuildVertexBuffers();

	// Clear screen
	ClearScreen();
	Flip(0);
}
Ejemplo n.º 2
0
void Game_Init()
{
	// create the renderer with a single layer that clears before rendering
	MFRenderLayerDescription layers[] = { { "Prism" }, { "Box" } };
	pRenderer = MFRenderer_Create(layers, 2, NULL, NULL);
	MFRenderer_SetCurrent(pRenderer);

	pDefaultStates = MFStateBlock_CreateDefault();
	MFRenderer_SetGlobalStateBlock(pRenderer, pDefaultStates);

	// configure prism layer
	MFRenderLayer *pLayer = MFRenderer_GetLayer(pRenderer, 0);
	MFRenderLayer_SetClear(pLayer, MFRCF_All, MakeVector(0.f, 0.f, 0.0f, 1.f));

	// create a render target for the layer
	MFRenderTarget *pRenderTarget = MFRenderTarget_CreateSimple("Prism", 256, 256);
	pPrismRenderTarget = MFMaterial_Create("Prism_RenderTarget0");
	MFRenderLayer_SetLayerRenderTarget(pLayer, pRenderTarget);
	MFRenderTarget_Release(pRenderTarget); // the render layer now has a reference, it will be destroyed with the renderer

	// configure box layer
	pLayer = MFRenderer_GetLayer(pRenderer, 1);
	MFRenderLayer_SetClear(pLayer, MFRCF_All, MakeVector(0.f, 0.f, 0.2f, 1.f));

	// configure the box layer as the default render layer
	MFRenderLayerSet layerSet;
	MFZeroMemory(&layerSet, sizeof(layerSet));
	layerSet.pSolidLayer = pLayer;
	MFRenderer_SetRenderLayerSet(pRenderer, &layerSet);

	// build a vertex buffer
	BuildVertexBuffers();

	// create some state blocks
	pPrismStateBlock = MFStateBlock_Create(128);
	pBoxStateBlock = MFStateBlock_Create(128);
}