#include "tier2/ifilesystem.h" #include "igamewindow.h" #include "materialsystem/imaterialsystem.h" #include "tier1/interface.h" #include "tier1/commandline.h" #include "tier0/mem.h" #include "sv_dll.h" extern "C" void FunnyMain( int argc, char **argv ) { CommandLine()->CreateCommandLine(argc, argv); filesystem->Init(); gamewindow->Init(); Materials()->Init(); ServerGameDLL()->Init(); IShader *pShader = NULL; IBuffer *pCameraInfoBuffer = NULL; IMaterial *pMaterial = NULL; IImage *pOutputImage = NULL; IVertexBuffer *pVertices = NULL; float vertices[9] = { 0,-0.5, 0.5, 0.5,0.5, 0.5, -0.5,0.5, 0.5, }; pVertices = g_pRenderContext->CreateVertexBuffer(36); void *pMapped = pVertices->Map(); V_memcpy(pMapped, vertices, 36); pVertices->Unmap(); pCameraInfoBuffer = g_pRenderContext->CreateConstantBuffer(64); pShader = g_pRenderContext->CreateShader("funnygame/core/shaders/flat.shader_c"); pMaterial = g_pRenderContext->CreateMaterial(pShader); pMaterial->PSSetConstantsBuffer(0, pCameraInfoBuffer); pOutputImage = g_pRenderContext->CreateRenderTarget( g_pRenderContext->GetNewOutputImageWidth(), g_pRenderContext->GetNewOutputImageHeight(), IMAGE_FORMAT_RGBA8_UNORM, MULTISAMPLE_TYPE_NONE); IRenderCommandList *pCommandList = g_pRenderContext->CreateCommandList(); pCommandList->StartRecording(); pCommandList->SetRenderTarget(0, pOutputImage); pCommandList->SetMaterial(pMaterial); pCommandList->SetVertexBuffer(0, pVertices); pCommandList->DrawPrimitives(3, 0, 1, 0); pCommandList->EndRecording(); for (;;) { /* if (g_pRenderContext->BIsOutputImageOutdated()) { uint32_t nWidth; uint32_t nHeight; pOutputImage = g_pRenderContext->CreateRenderTarget( g_pRenderContext->GetNewOutputImageWidth(), g_pRenderContext->GetNewOutputImageHeight(), IMAGE_FORMAT_RGBA8_UNORM, MULTISAMPLE_TYPE_NONE); } */ g_pRenderContext->SubmitCommandList(pCommandList); g_pRenderContext->SetOutputImage(pOutputImage); gamewindow->UpdateWindow(); Materials()->Frame(0); }; };