// 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); }
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); }