Page:
Getting started
Pages
Animation
Asset browser
Audio
Available plugins
Basis Universal
Building 3rd party libraries
Case sensitive filesystems
Code rules
Command line
Custom plugin
Exporting game
Features
Filesystem
Getting started
Home
Hot reload
How to move from Unity to Lumix
Importing assets
Ingame GUI
Knowledge base
Latency
List of free assets
Lua scripting
Native Scripting
Navigation
Particle system
Physics
Plugin hotreload
Profiler
Resource UID
Terrain
Video tutorials
Writing a postprocess effect
50
Getting started
Mikulas Florek edited this page 2023-08-28 23:57:00 +02:00
Table of Contents
Non-programmers
You can get Lumix Engine from itch.io or download standalone zip file from actions.
Programmers - Windows
Prerequisites
- Visual Studio 2022 on Windows
- git client
- MinGW is not supported
Download bootstrap batch file and run it. It will fetch the repository, create Visual Studio solution and open it. After that you can build the solution and run the editor. If something fails or you do not want to use the batch file, execute these 4 steps manually
Programmers - Linux
Download this shell script and run it. It will fetch the repository, create makefile, build it and run the editor.
- Note: the shell script needs git, make and g++5 accessible
- Note: to build using clang, call
./genie --gcc=linux-clang gmake
- Note: to build using clang & ninja, call
./genie --gcc=linux-clang ninja
No editor workflow
This is minimal code to display a triangle for people who want code-first workflow without editor. Up to date code can be found at the bottom of https://github.com/nem0/LumixEngine/blob/master/src/app/main.cpp
#include "engine/allocators.h"
#include "engine/os.h"
#include "renderer/gpu/gpu.h"
using namespace Lumix;
int main(int args, char* argv[]) {
OS::WindowHandle win = OS::createWindow({});
DefaultAllocator allocator;
gpu::preinit(allocator, false);
gpu::init(win, gpu::InitFlags::NONE);
gpu::ProgramHandle shader = gpu::allocProgramHandle();
const gpu::ShaderType types[] = {gpu::ShaderType::VERTEX, gpu::ShaderType::FRAGMENT};
const char* srcs[] = {
"void main() { gl_Position = vec4(gl_VertexID & 1, (gl_VertexID >> 1) & 1, 0, 1); }",
"layout(location = 0) out vec4 color; void main() { color = vec4(1, 0, 1, 1); }",
};
gpu::createProgram(shader, {}, srcs, types, 2, nullptr, 0, "shader");
bool finished = false;
while (!finished) {
OS::Event e;
while (OS::getEvent(Ref(e))) {
switch (e.type) {
case OS::Event::Type::WINDOW_CLOSE:
case OS::Event::Type::QUIT: finished = true; break;
}
}
gpu::setFramebuffer(nullptr, 0, gpu::INVALID_TEXTURE, gpu::FramebufferFlags::NONE);
const float clear_col[] = {0, 0, 0, 1};
gpu::clear(gpu::ClearFlags::COLOR | gpu::ClearFlags::DEPTH, clear_col, 0);
gpu::useProgram(shader);
gpu::setState(gpu::StateFlags::NONE);
gpu::drawArrays(0, 3, gpu::PrimitiveType::TRIANGLES);
u32 frame = gpu::swapBuffers();
gpu::waitFrame(frame);
}
gpu::shutdown();
OS::destroyWindow(win);
}