Browse Source

Fix MeshVisualizer & tests

pull/576/head
Vladislav Oleshko 4 years ago
parent
commit
dd51e27247
  1. 25
      src/Magnum/Shaders/MeshVisualizerGL.cpp
  2. 6
      src/Magnum/Shaders/MeshVisualizerGL.h
  3. 6
      src/Magnum/Shaders/Test/MeshVisualizerGLTest.cpp

25
src/Magnum/Shaders/MeshVisualizerGL.cpp

@ -903,19 +903,7 @@ MeshVisualizerGL3D::CompileState MeshVisualizerGL3D::compile(Flags flags
return CompileState{std::move(out), std::move(vert), std::move(frag), std::move(geom), flags, version}; return CompileState{std::move(out), std::move(vert), std::move(frag), std::move(geom), flags, version};
} }
MeshVisualizerGL3D::MeshVisualizerGL3D(Flags flags) : MeshVisualizerGL3D{compile(flags)} {} MeshVisualizerGL3D::MeshVisualizerGL3D(CompileState&& cs): MeshVisualizerGL3D{static_cast<MeshVisualizerGL3D&&>(std::move(cs))} {
#ifndef MAGNUM_TARGET_GLES2
MeshVisualizerGL3D::CompileState MeshVisualizerGL3D::compile(Flags flags) {
return compile(flags, 1, 1);
}
MeshVisualizerGL3D::MeshVisualizerGL3D(Flags flags, UnsignedInt materialCount, UnsignedInt drawCount)
: MeshVisualizerGL3D{compile(flags, materialCount, drawCount)} {}
#endif
MeshVisualizerGL3D::MeshVisualizerGL3D(CompileState&& cs)
: MeshVisualizerGL3D{static_cast<MeshVisualizerGL3D&&>(std::move(cs))} {
if (id() == 0) return; if (id() == 0) return;
CORRADE_INTERNAL_ASSERT_OUTPUT(checkLink()); CORRADE_INTERNAL_ASSERT_OUTPUT(checkLink());
@ -1055,6 +1043,17 @@ MeshVisualizerGL3D::MeshVisualizerGL3D(CompileState&& cs)
static_cast<void>(version); static_cast<void>(version);
} }
MeshVisualizerGL3D::MeshVisualizerGL3D(Flags flags) : MeshVisualizerGL3D{compile(flags)} {}
#ifndef MAGNUM_TARGET_GLES2
MeshVisualizerGL3D::CompileState MeshVisualizerGL3D::compile(Flags flags) {
return compile(flags, 1, 1);
}
MeshVisualizerGL3D::MeshVisualizerGL3D(Flags flags, UnsignedInt materialCount, UnsignedInt drawCount):
MeshVisualizerGL3D{compile(flags, materialCount, drawCount)} {}
#endif
MeshVisualizerGL3D& MeshVisualizerGL3D::setTransformationMatrix(const Matrix4& matrix) { MeshVisualizerGL3D& MeshVisualizerGL3D::setTransformationMatrix(const Matrix4& matrix) {
#ifndef MAGNUM_TARGET_GLES2 #ifndef MAGNUM_TARGET_GLES2
CORRADE_ASSERT(!(flags() >= Flag::UniformBuffers), CORRADE_ASSERT(!(flags() >= Flag::UniformBuffers),

6
src/Magnum/Shaders/MeshVisualizerGL.h

@ -886,13 +886,13 @@ class MAGNUM_SHADERS_EXPORT MeshVisualizerGL2D: public Implementation::MeshVisua
Int _transformationProjectionMatrixUniform{9}; Int _transformationProjectionMatrixUniform{9};
}; };
class MeshVisualizerGL2D::CompileState : public MeshVisualizerGL2D { class MeshVisualizerGL2D::CompileState: public MeshVisualizerGL2D {
private: private:
friend class MeshVisualizerGL2D; friend class MeshVisualizerGL2D;
explicit CompileState(NoCreateT) : MeshVisualizerGL2D{NoCreate}, _vert{NoCreate}, _frag{NoCreate} {} explicit CompileState(NoCreateT): MeshVisualizerGL2D{NoCreate}, _vert{NoCreate}, _frag{NoCreate} {}
CompileState(MeshVisualizerGL2D&& shader, GL::Shader&& vert, GL::Shader&& frag, Containers::Optional<GL::Shader>&& geom, Flags flags, GL::Version version) : CompileState(MeshVisualizerGL2D&& shader, GL::Shader&& vert, GL::Shader&& frag, Containers::Optional<GL::Shader>&& geom, Flags flags, GL::Version version):
MeshVisualizerGL2D{std::move(shader)}, _vert{std::move(vert)}, _frag{std::move(frag)}, _geom{std::move(geom)}, _flags{flags}, _version{version} {} MeshVisualizerGL2D{std::move(shader)}, _vert{std::move(vert)}, _frag{std::move(frag)}, _geom{std::move(geom)}, _flags{flags}, _version{version} {}
GL::Shader _vert, _frag; GL::Shader _vert, _frag;

6
src/Magnum/Shaders/Test/MeshVisualizerGLTest.cpp

@ -1546,6 +1546,7 @@ void MeshVisualizerGLTest::constructUniformBuffers2DAsync() {
} }
#endif #endif
void MeshVisualizerGLTest::construct3D() { void MeshVisualizerGLTest::construct3D() {
auto&& data = ConstructData3D[testCaseInstanceId()]; auto&& data = ConstructData3D[testCaseInstanceId()];
setTestCaseDescription(data.name); setTestCaseDescription(data.name);
@ -1612,10 +1613,9 @@ void MeshVisualizerGLTest::construct3DAsync() {
while(!compileState.isLinkFinished()) while(!compileState.isLinkFinished())
Utility::System::sleep(100); Utility::System::sleep(100);
// TODO: FIXME MeshVisualizerGL3D shader{std::move(compileState)}; MeshVisualizerGL3D shader{std::move(compileState)};
MeshVisualizerGL3D shader{MeshVisualizerGL3D::Flag::Wireframe|MeshVisualizerGL3D::Flag::NoGeometryShader};
CORRADE_COMPARE(shader.flags(), MeshVisualizerGL3D::Flag::Wireframe|MeshVisualizerGL3D::Flag::NoGeometryShader); CORRADE_COMPARE(shader.flags(), MeshVisualizerGL3D::Flag::Wireframe|MeshVisualizerGL3D::Flag::NoGeometryShader);
CORRADE_VERIFY(compileState.isLinkFinished()); CORRADE_VERIFY(shader.isLinkFinished());
CORRADE_VERIFY(shader.id()); CORRADE_VERIFY(shader.id());
{ {
#if defined(CORRADE_TARGET_APPLE) && !defined(MAGNUM_TARGET_GLES) #if defined(CORRADE_TARGET_APPLE) && !defined(MAGNUM_TARGET_GLES)

Loading…
Cancel
Save