Exemple #1
0
MF_API void MFRenderLayer_SetLayerRenderTarget(MFRenderLayer *pLayer, MFRenderTarget *pRenderTarget)
{
	if(pLayer->pRenderTarget)
		MFRenderTarget_Release(pLayer->pRenderTarget);

	MFResource_AddRef(pRenderTarget);
	pLayer->pRenderTarget = pRenderTarget;
}
Exemple #2
0
MF_API void MFRenderer_Destroy(MFRenderer *pRenderer)
{
	for(int a=0; a<pRenderer->numLayers; ++a)
	{
		if(pRenderer->pLayers[a].pRenderTarget)
			MFRenderTarget_Release(pRenderer->pLayers[a].pRenderTarget);
	}

	MFHeap_Free(pRenderer);
}
Exemple #3
0
void MFRenderer_DestroyDisplay(MFDisplay *pDisplay)
{
	if(gpDeviceRenderTarget)
		MFRenderTarget_Release(gpDeviceRenderTarget);

#if MF_DISPLAY == MF_DRIVER_X11
	if(fbConfigs != NULL)
	{
		XFree(fbConfigs);
		fbConfigs = NULL;
	}

	if(glXContext != NULL)
	{
		glXDestroyContext(xdisplay, glXContext);
		glXContext = NULL;
	}

	if(glXWindow != 0)
	{
		glXDestroyWindow(xdisplay, glXWindow);
		glXWindow = 0;
	}
#elif MF_DISPLAY == MF_DRIVER_WIN32
	HWND hWnd = (HWND)MFWindow_GetSystemWindowHandle(pDisplay->settings.pWindow);

	if(hRC)
	{
		if(wglMakeCurrent(NULL, NULL))
		{
			wglDeleteContext(hRC);
		}
		hRC = NULL;
	}

	if(hDC)
	{
		ReleaseDC(hWnd, hDC);
		hDC = NULL;
	}
#elif MF_DISPLAY == MF_DRIVER_SDL2
	SDL_GL_DeleteContext(glContext);
#endif
}
Exemple #4
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);
}