Разработка игрового движка с нуля, как создать игровой движок |
Здравствуйте, гость ( Авторизация | Регистрация )
Разработка игрового движка с нуля, как создать игровой движок |
03.12.2017, 21:02
Сообщение
#1
|
|
Геймер Репутация: 86 Группа: Участник Сообщений: 128 Награды: 4 Регистрация: 05.05.2012 |
Пилю в свободное время графический движок
Что-то с проекцией не то: Треугольник равносторонний: (-0.5, -0.5, 0), (0.5, -0.5, 0), (0, 0.5, 0) Клиентский код: + Код #include <engine/platform.h> #include <engine/renderer.h> std::string vertexShaderSrc = "\n\ attribute vec4 vertexPosition;\n\ uniform mat4 modelViewProj;\n\ void main()\n\ {\n\ gl_Position = modelViewProj * vertexPosition;\n\ }\n\ \0"; std::string fragmentShaderSrc = "\n\ void main()\n\ {\n\ gl_FragColor = vec4(1.0, 0.5, 0.5, 1.0);\n\ }\n\ \0"; struct Vertex { float x, y, z; }; Vertex vertices[] = { {-0.5f, -0.5f, 0}, {0.5f, -0.5f, 0}, {0.0f, 0.5f, 0}, }; unsigned short indices[] = { 0, 1, 2 }; int main() { Engine::Platform *platform = Engine::GetPlatform(); if (!platform->CreateMainWindow()) return -1; Engine::Renderer *renderer = Engine::GetRenderer(); size_t size = vertexShaderSrc.size(); const Engine::Byte *pVertShaderData = reinterpret_cast<const Engine::Byte*>(vertexShaderSrc.data()); Engine::ByteVector vertexSrc(pVertShaderData, pVertShaderData + size); size = fragmentShaderSrc.size(); const Engine::Byte *pFragShaderData = reinterpret_cast<const Engine::Byte*>(fragmentShaderSrc.data()); Engine::ByteVector fragSrc(pFragShaderData, pFragShaderData + size); auto progId = renderer->CreateGpuProgram(Engine::STATIC_VERTEX, vertexSrc, fragSrc); renderer->BindGpuProgram(progId); const Engine::Byte *pVertData = reinterpret_cast<const Engine::Byte*>(vertices); Engine::ByteVector verts(pVertData, pVertData + sizeof(vertices)); const Engine::Byte *pIndexData = reinterpret_cast<const Engine::Byte*>(indices); Engine::ByteVector inds(pIndexData, pIndexData + sizeof(indices)); auto buffId = renderer->CreateHardwareBuffer(Engine::STATIC_VERTEX, verts, inds); Engine::Matrix4 proj, model, modelViewProj; proj.SetPerspective(1.3f, 1.78f, 1.0f, 100.0f); model.SetTranslation(Engine::Vector3(0, 0, -1.5f)); modelViewProj = model * proj; renderer->SetGpuProgramConstant(progId, "modelViewProj", modelViewProj); platform->SetMainWindowSize(1280, 720, true); renderer->SetViewport(1280, 720); for (;;) { if (!platform->UpdateMainWindow()) { break; } renderer->BeginRenderFrame(); renderer->DrawHardwareBuffer(buffId); renderer->EndRenderFrame(); } renderer->DestroyHardwareBuffer(buffId); renderer->DestroyGpuProgram(progId); } Нука быстра, помогите найти в чем проблема, пожалуйста? -------------------- nop
|
 
|
|
|
|
Текстовая версия | Сейчас: 12.06.2024, 12:58 |