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<> struct BoxMesh<2> {
constexpr static char shader[] = "shader2d";
constexpr static char key[] = "box2d";
constexpr static ResourceKey shader() { return {"shader2d"}; }
constexpr static ResourceKey key() { return {"box2d"}; }
static Mesh* mesh(Buffer* buffer) {
Primitives::Square square;
@ -42,8 +42,8 @@ namespace {
};
template<> struct BoxMesh<3> {
constexpr static char shader[] = "shader3d";
constexpr static char key[] = "box3d";
constexpr static ResourceKey shader() { return {"shader3d"}; }
constexpr static ResourceKey key() { return {"box3d"}; }
static Mesh* mesh(Buffer* buffer) {
Primitives::Cube cube;
@ -56,12 +56,7 @@ namespace {
};
}
constexpr char BoxMesh<2>::shader[];
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) {
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) {
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);

12
src/Shaders/FlatShader.cpp

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

Loading…
Cancel
Save