#include "tier2/ifilesystem.h" #include "igamewindow.h" #include "materialsystem/imaterialsystem.h" #include "tier1/interface.h" #include "tier0/commandline.h" #include "tier0/mem.h" #include "sv_dll.h" IRenderContext *g_pRenderContext; IFileSystem *filesystem; extern "C" void FunnyMain( int argc, char **argv ) { CommandLine()->CreateCommandLine(argc, argv); CreateInterfaceFn pFilesystemFactory = Sys_GetFactory("filesystem_std"); filesystem = (IFileSystem*)pFilesystemFactory(FILESYSTEM_INTERFACE_VERSION, NULL); filesystem->Init(); CreateInterfaceFn pMaterialSystemFactory = Sys_GetFactory("MaterialSystem"); CreateInterfaceFn pRenderSystemFactory = Sys_GetFactory("RenderSystemVulkan"); g_pRenderContext = (IRenderContext*)pRenderSystemFactory(RENDER_CONTEXT_INTERFACE_VERSION, NULL); g_pRenderContext->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( 1280, 720, IMAGE_FORMAT_RGBA8_UNORM, MULTISAMPLE_TYPE_NONE); IRenderCommandList *pCommandList = g_pRenderContext->CreateCommandList(); pCommandList->StartRecording(); pCommandList->SetRenderTarget(0, pOutputImage); pCommandList->SetClearColor(0, 1,0,0,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->Frame(0); }; };