Files
funnygame/engine/engine.cpp
2026-02-01 17:47:49 +02:00

87 lines
2.2 KiB
C++

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