FRONTEND: started map renderer for mini and world map

master
Martin Gerhardy 2016-12-02 20:03:27 +01:00
parent 1925cbda81
commit f440758f92
8 changed files with 74 additions and 21 deletions

View File

@ -1,8 +0,0 @@
$out vec4 o_color;
$in vec2 v_texcoord;
uniform sampler2D u_texture;
void main() {
o_color = $texture2D(u_texture, v_texcoord);
}

View File

@ -1,11 +0,0 @@
uniform mat4 u_view;
uniform mat4 u_model;
uniform mat4 u_projection;
$in vec3 a_pos;
$in vec2 a_texcoord;
$out vec2 v_texcoord;
void main(void) {
v_texcoord = a_texcoord;
gl_Position = u_projection * u_view * u_model * vec4(a_pos, 1.0);
}

View File

@ -0,0 +1,38 @@
/**
* @file
*/
#include "MapRenderer.h"
#include "video/ScopedFrameBuffer.h"
namespace frontend {
MapRenderer::MapRenderer(const voxel::WorldPtr& world) :
_world(world) {
}
void MapRenderer::shutdown() {
_frameBuffer.shutdown();
}
bool MapRenderer::init() {
// TODO: size
const glm::vec2 dim(42, 42);
if (!_frameBuffer.init(dim)) {
return false;
}
// TODO: setup shader
return true;
}
void MapRenderer::updateMiniMap() {
// TODO: render minimap to texture
video::ScopedFrameBuffer scoped(_frameBuffer);
}
int MapRenderer::renderMiniMap(const video::Camera& camera, const glm::vec2& pos, int* vertices) {
// TODO: render fbo in ortho mode to the given coordinates
return 0;
}
}

View File

@ -0,0 +1,34 @@
/**
* @file
*/
#pragma once
#include "voxel/World.h"
#include "video/Camera.h"
#include "video/FrameBuffer.h"
#include "FrontendShaders.h"
namespace frontend {
/**
* @brief Class to render the minimap and the worldmap of the voxel chunks
*/
class MapRenderer {
private:
voxel::WorldPtr _world;
video::FrameBuffer _frameBuffer;
public:
MapRenderer(const voxel::WorldPtr& world);
bool init();
void shutdown();
// TODO: maybe the list of chunks to include in the minimap? That way we can also use this class
// for the worldmap
void updateMiniMap();
int renderMiniMap(const video::Camera& camera, const glm::vec2& pos, int* vertices);
};
}

View File

@ -11,7 +11,7 @@ set(SRCS
)
set(LIB ui)
add_library(${LIB} ${SRCS})
generate_shaders(${LIB} ui)
generate_shaders(${LIB} texture)
target_link_libraries(${LIB} core io video turbobadger)
set_target_properties(${LIB} PROPERTIES FOLDER ${LIB})

View File

@ -41,7 +41,7 @@ public:
class UIRendererGL: public TBRendererBatcher {
private:
UIBitmapGL _white;
shader::UiShader _shader;
shader::TextureShader _shader;
GLuint _buffer = 0u;
GLuint _vao = 0u;