Browse Source

Internal "traits" cleanup.

Don't use constexpr class members, as their usage is not so convenient
compared to classic inline functions.
pull/7/head
Vladimír Vondruš 14 years ago
parent
commit
2dd0a68329
  1. 15
      src/Physics/Implementation/BoxRenderer.cpp
  2. 12
      src/Shaders/FlatShader.cpp

15
src/Physics/Implementation/BoxRenderer.cpp

@ -28,8 +28,8 @@ namespace {
template<std::uint8_t> struct BoxMesh {}; template<std::uint8_t> struct BoxMesh {};
template<> struct BoxMesh<2> { template<> struct BoxMesh<2> {
constexpr static char shader[] = "shader2d"; constexpr static ResourceKey shader() { return {"shader2d"}; }
constexpr static char key[] = "box2d"; constexpr static ResourceKey key() { return {"box2d"}; }
static Mesh* mesh(Buffer* buffer) { static Mesh* mesh(Buffer* buffer) {
Primitives::Square square; Primitives::Square square;
@ -42,8 +42,8 @@ namespace {
}; };
template<> struct BoxMesh<3> { template<> struct BoxMesh<3> {
constexpr static char shader[] = "shader3d"; constexpr static ResourceKey shader() { return {"shader3d"}; }
constexpr static char key[] = "box3d"; constexpr static ResourceKey key() { return {"box3d"}; }
static Mesh* mesh(Buffer* buffer) { static Mesh* mesh(Buffer* buffer) {
Primitives::Cube cube; Primitives::Cube cube;
@ -56,12 +56,7 @@ namespace {
}; };
} }
constexpr char BoxMesh<2>::shader[]; template<std::uint8_t dimensions> BoxRenderer<dimensions>::BoxRenderer(Box<dimensions>& box, ResourceKey options, typename SceneGraph::AbstractObject<dimensions>::ObjectType* parent): AbstractDebugRenderer<dimensions>(BoxMesh<dimensions>::shader(), BoxMesh<dimensions>::key(), options, parent), buffer(DebugDrawResourceManager::instance()->get<Buffer>(BoxMesh<dimensions>::key())), box(box) {
constexpr char BoxMesh<2>::key[];
constexpr char BoxMesh<3>::shader[];
constexpr char BoxMesh<3>::key[];
template<std::uint8_t dimensions> BoxRenderer<dimensions>::BoxRenderer(Box<dimensions>& box, ResourceKey options, typename SceneGraph::AbstractObject<dimensions>::ObjectType* parent): AbstractDebugRenderer<dimensions>(BoxMesh<dimensions>::shader, BoxMesh<dimensions>::key, options, parent), buffer(DebugDrawResourceManager::instance()->get<Buffer>(BoxMesh<dimensions>::key)), box(box) {
if(!this->mesh) { if(!this->mesh) {
DebugDrawResourceManager::instance()->set(this->buffer.key(), new Buffer, ResourceDataState::Final, ResourcePolicy::Manual); DebugDrawResourceManager::instance()->set(this->buffer.key(), new Buffer, ResourceDataState::Final, ResourcePolicy::Manual);
DebugDrawResourceManager::instance()->set<Mesh>(this->mesh.key(), BoxMesh<dimensions>::mesh(buffer), ResourceDataState::Final, ResourcePolicy::Manual); DebugDrawResourceManager::instance()->set<Mesh>(this->mesh.key(), BoxMesh<dimensions>::mesh(buffer), ResourceDataState::Final, ResourcePolicy::Manual);

12
src/Shaders/FlatShader.cpp

@ -26,13 +26,13 @@ namespace {
template<std::uint8_t dimensions> struct ShaderName {}; template<std::uint8_t dimensions> struct ShaderName {};
template<> struct ShaderName<2> { template<> struct ShaderName<2> {
constexpr static const char* Vertex = "FlatShader2D.vert"; constexpr static const char* vertex() { return "FlatShader2D.vert"; }
constexpr static const char* Fragment = "FlatShader2D.frag"; constexpr static const char* fragment() { return "FlatShader2D.frag"; }
}; };
template<> struct ShaderName<3> { template<> struct ShaderName<3> {
constexpr static const char* Vertex = "FlatShader3D.vert"; constexpr static const char* vertex() { return "FlatShader3D.vert"; }
constexpr static const char* Fragment = "FlatShader3D.frag"; constexpr static const char* fragment() { return "FlatShader3D.frag"; }
}; };
} }
@ -47,12 +47,12 @@ template<std::uint8_t dimensions> FlatShader<dimensions>::FlatShader() {
Shader vertexShader(v, Shader::Type::Vertex); Shader vertexShader(v, Shader::Type::Vertex);
vertexShader.addSource(rs.get("compatibility.glsl")); vertexShader.addSource(rs.get("compatibility.glsl"));
vertexShader.addSource(rs.get(ShaderName<dimensions>::Vertex)); vertexShader.addSource(rs.get(ShaderName<dimensions>::vertex()));
attachShader(vertexShader); attachShader(vertexShader);
Shader fragmentShader(v, Shader::Type::Fragment); Shader fragmentShader(v, Shader::Type::Fragment);
fragmentShader.addSource(rs.get("compatibility.glsl")); fragmentShader.addSource(rs.get("compatibility.glsl"));
fragmentShader.addSource(rs.get(ShaderName<dimensions>::Fragment)); fragmentShader.addSource(rs.get(ShaderName<dimensions>::fragment()));
attachShader(fragmentShader); attachShader(fragmentShader);
#ifndef MAGNUM_TARGET_GLES #ifndef MAGNUM_TARGET_GLES

Loading…
Cancel
Save