mirror of https://github.com/mosra/magnum.git
Browse Source
Conflicts: package/ci/jenkins.xml src/Magnum/AbstractShaderProgram.cpp src/Magnum/Math/RectangularMatrix.h src/Magnum/MeshTools/CompressIndices.h src/Magnum/Platform/Sdl2Application.h src/Magnum/Resource.h src/Magnum/Shader.cpp src/Magnum/Test/AbstractImageTest.cpp src/Magnum/Test/AbstractShaderProgramTest.cpp src/Magnum/Test/MeshTest.cpp src/Magnum/Text/Text.h src/Magnum/Timeline.h src/Test/AbstractShaderProgramGLTest.cpp src/Test/FramebufferGLTest.cpp src/Test/MeshGLTest.cpp
668 changed files with 7386 additions and 3053 deletions
@ -0,0 +1,194 @@
|
||||
<doxygenlayout version="1.0"> |
||||
<!-- Generated by doxygen 1.8.5 --> |
||||
<!-- Navigation index tabs for HTML output --> |
||||
<navindex> |
||||
<tab type="mainpage" visible="yes" title=""/> |
||||
<tab type="pages" visible="yes" title="" intro=""/> |
||||
<tab type="modules" visible="yes" title="" intro=""/> |
||||
<tab type="namespaces" visible="yes" title=""> |
||||
<tab type="namespacelist" visible="yes" title="" intro=""/> |
||||
<tab type="namespacemembers" visible="yes" title="" intro=""/> |
||||
</tab> |
||||
<tab type="classes" visible="yes" title=""> |
||||
<tab type="classlist" visible="yes" title="" intro=""/> |
||||
<tab type="classindex" visible="$ALPHABETICAL_INDEX" title=""/> |
||||
<tab type="hierarchy" visible="yes" title="" intro=""/> |
||||
<tab type="classmembers" visible="yes" title="" intro=""/> |
||||
</tab> |
||||
<tab type="files" visible="yes" title=""> |
||||
<tab type="filelist" visible="yes" title="" intro=""/> |
||||
<tab type="globals" visible="yes" title="" intro=""/> |
||||
</tab> |
||||
<tab type="examples" visible="yes" title="" intro=""/> |
||||
</navindex> |
||||
|
||||
<!-- Layout definition for a class page --> |
||||
<class> |
||||
<briefdescription visible="yes"/> |
||||
<includes visible="$SHOW_INCLUDE_FILES"/> |
||||
<inheritancegraph visible="$CLASS_GRAPH"/> |
||||
<collaborationgraph visible="$COLLABORATION_GRAPH"/> |
||||
<memberdecl> |
||||
<nestedclasses visible="yes" title=""/> |
||||
<publictypes title=""/> |
||||
<services title=""/> |
||||
<interfaces title=""/> |
||||
<publicslots title=""/> |
||||
<signals title=""/> |
||||
<publicmethods title=""/> |
||||
<publicstaticmethods title=""/> |
||||
<publicattributes title=""/> |
||||
<publicstaticattributes title=""/> |
||||
<protectedtypes title=""/> |
||||
<protectedslots title=""/> |
||||
<protectedmethods title=""/> |
||||
<protectedstaticmethods title=""/> |
||||
<protectedattributes title=""/> |
||||
<protectedstaticattributes title=""/> |
||||
<packagetypes title=""/> |
||||
<packagemethods title=""/> |
||||
<packagestaticmethods title=""/> |
||||
<packageattributes title=""/> |
||||
<packagestaticattributes title=""/> |
||||
<properties title=""/> |
||||
<events title=""/> |
||||
<privatetypes title=""/> |
||||
<privateslots title=""/> |
||||
<privatemethods title=""/> |
||||
<privatestaticmethods title=""/> |
||||
<privateattributes title=""/> |
||||
<privatestaticattributes title=""/> |
||||
<friends title=""/> |
||||
<related title="" subtitle=""/> |
||||
<membergroups visible="yes"/> |
||||
</memberdecl> |
||||
<detaileddescription title=""/> |
||||
<memberdef> |
||||
<inlineclasses title=""/> |
||||
<typedefs title=""/> |
||||
<enums title=""/> |
||||
<services title=""/> |
||||
<interfaces title=""/> |
||||
<constructors title=""/> |
||||
<functions title=""/> |
||||
<related title=""/> |
||||
<variables title=""/> |
||||
<properties title=""/> |
||||
<events title=""/> |
||||
</memberdef> |
||||
<allmemberslink visible="yes"/> |
||||
<usedfiles visible="$SHOW_USED_FILES"/> |
||||
<authorsection visible="yes"/> |
||||
</class> |
||||
|
||||
<!-- Layout definition for a namespace page --> |
||||
<namespace> |
||||
<briefdescription visible="yes"/> |
||||
<memberdecl> |
||||
<nestednamespaces visible="yes" title=""/> |
||||
<constantgroups visible="yes" title=""/> |
||||
<classes visible="yes" title=""/> |
||||
<typedefs title=""/> |
||||
<enums title=""/> |
||||
<functions title=""/> |
||||
<variables title=""/> |
||||
<membergroups visible="yes"/> |
||||
</memberdecl> |
||||
<detaileddescription title=""/> |
||||
<memberdef> |
||||
<inlineclasses title=""/> |
||||
<typedefs title=""/> |
||||
<enums title=""/> |
||||
<functions title=""/> |
||||
<variables title=""/> |
||||
</memberdef> |
||||
<authorsection visible="yes"/> |
||||
</namespace> |
||||
|
||||
<!-- Layout definition for a file page --> |
||||
<file> |
||||
<briefdescription visible="yes"/> |
||||
<includes visible="no"/> <!-- this is useless --> |
||||
<includegraph visible="$INCLUDE_GRAPH"/> |
||||
<includedbygraph visible="$INCLUDED_BY_GRAPH"/> |
||||
<sourcelink visible="yes"/> |
||||
<memberdecl> |
||||
<classes visible="yes" title=""/> |
||||
<namespaces visible="yes" title=""/> |
||||
<constantgroups visible="yes" title=""/> |
||||
<defines title=""/> |
||||
<typedefs title=""/> |
||||
<enums title=""/> |
||||
<functions title=""/> |
||||
<variables title=""/> |
||||
<membergroups visible="yes"/> |
||||
</memberdecl> |
||||
<detaileddescription title=""/> |
||||
<memberdef> |
||||
<inlineclasses title=""/> |
||||
<defines title=""/> |
||||
<typedefs title=""/> |
||||
<enums title=""/> |
||||
<functions title=""/> |
||||
<variables title=""/> |
||||
</memberdef> |
||||
<authorsection/> |
||||
</file> |
||||
|
||||
<!-- Layout definition for a group page --> |
||||
<group> |
||||
<briefdescription visible="yes"/> |
||||
<groupgraph visible="$GROUP_GRAPHS"/> |
||||
<memberdecl> |
||||
<nestedgroups visible="yes" title=""/> |
||||
<dirs visible="yes" title=""/> |
||||
<files visible="yes" title=""/> |
||||
<namespaces visible="yes" title=""/> |
||||
<classes visible="yes" title=""/> |
||||
<defines title=""/> |
||||
<typedefs title=""/> |
||||
<enums title=""/> |
||||
<enumvalues title=""/> |
||||
<functions title=""/> |
||||
<variables title=""/> |
||||
<signals title=""/> |
||||
<publicslots title=""/> |
||||
<protectedslots title=""/> |
||||
<privateslots title=""/> |
||||
<events title=""/> |
||||
<properties title=""/> |
||||
<friends title=""/> |
||||
<membergroups visible="yes"/> |
||||
</memberdecl> |
||||
<detaileddescription title=""/> |
||||
<memberdef> |
||||
<pagedocs/> |
||||
<inlineclasses title=""/> |
||||
<defines title=""/> |
||||
<typedefs title=""/> |
||||
<enums title=""/> |
||||
<enumvalues title=""/> |
||||
<functions title=""/> |
||||
<variables title=""/> |
||||
<signals title=""/> |
||||
<publicslots title=""/> |
||||
<protectedslots title=""/> |
||||
<privateslots title=""/> |
||||
<events title=""/> |
||||
<properties title=""/> |
||||
<friends title=""/> |
||||
</memberdef> |
||||
<authorsection visible="yes"/> |
||||
</group> |
||||
|
||||
<!-- Layout definition for a directory page --> |
||||
<directory> |
||||
<briefdescription visible="yes"/> |
||||
<directorygraph visible="yes"/> |
||||
<memberdecl> |
||||
<dirs visible="yes"/> |
||||
<files visible="yes"/> |
||||
</memberdecl> |
||||
<detaileddescription title=""/> |
||||
</directory> |
||||
</doxygenlayout> |
||||
@ -0,0 +1,390 @@
|
||||
/* |
||||
This file is part of Magnum. |
||||
|
||||
Copyright © 2010, 2011, 2012, 2013 Vladimír Vondruš <mosra@centrum.cz> |
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a |
||||
copy of this software and associated documentation files (the "Software"), |
||||
to deal in the Software without restriction, including without limitation |
||||
the rights to use, copy, modify, merge, publish, distribute, sublicense, |
||||
and/or sell copies of the Software, and to permit persons to whom the |
||||
Software is furnished to do so, subject to the following conditions: |
||||
|
||||
The above copyright notice and this permission notice shall be included |
||||
in all copies or substantial portions of the Software. |
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
||||
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
||||
DEALINGS IN THE SOFTWARE. |
||||
*/ |
||||
|
||||
namespace Magnum { |
||||
|
||||
/** @page opengl-mapping OpenGL command mapping |
||||
@brief List of OpenGL commands corresponding to particular %Magnum API. |
||||
|
||||
@tableofcontents |
||||
|
||||
Legend: |
||||
- *not needed* -- given feature is implemented in a way that makes the |
||||
function unnecessary |
||||
- *not queryable*, *not supported* -- see @ref opengl-unsupported |
||||
- (empty) -- given feature is not yet implemented |
||||
|
||||
@section opengl-mapping-functions Functions |
||||
|
||||
OpenGL function | Matching API |
||||
-------------------------------------- | ------------ |
||||
@fn_gl{ActiveShaderProgram} | | |
||||
@fn_gl{ActiveTexture} | @ref AbstractTexture::bind() |
||||
@fn_gl{AttachShader} | @ref AbstractShaderProgram::attachShader() |
||||
@fn_gl{BeginConditionalRender}, `glEndConditionalRender()` | @ref SampleQuery::beginConditionalRender(), \n @ref SampleQuery::endConditionalRender() |
||||
@fn_gl{BeginQuery}, `glEndQuery()` | @ref PrimitiveQuery::begin(), \n @ref SampleQuery::begin(), \n @ref TimeQuery::begin(), \n @ref AbstractQuery::end() |
||||
@fn_gl{BeginQueryIndexed}, `glEndQueryIndexed()` | | |
||||
@fn_gl{BeginTransformFeedback}, `glEndTransformFeedback()` | | |
||||
@fn_gl{BindAttribLocation} | @ref AbstractShaderProgram::bindAttributeLocation() |
||||
@fn_gl{BindBuffer} | not needed, handhled internally in @ref Buffer and elsewhere |
||||
@fn_gl{BindBufferBase} | | |
||||
@fn_gl{BindBufferRange} | | |
||||
@fn_gl{BindBuffersBase} | | |
||||
@fn_gl{BindBuffersRange} | | |
||||
@fn_gl{BindFragDataLocation} | @ref AbstractShaderProgram::bindFragmentDataLocation() |
||||
@fn_gl{BindFragDataLocationIndexed} | @ref AbstractShaderProgram::bindFragmentDataLocationIndexed() |
||||
@fn_gl{BindFramebuffer} | @ref Framebuffer::bind() |
||||
@fn_gl{BindImageTexture} | | |
||||
@fn_gl{BindImageTextures} | | |
||||
@fn_gl{BindProgramPipeline} | | |
||||
@fn_gl{BindRenderbuffer} | not needed, handhled internally in @ref Renderbuffer |
||||
@fn_gl{BindSampler} | | |
||||
@fn_gl{BindSamplers} | | |
||||
@fn_gl{BindTexture}, \n @fn_gl_extension{BindMultiTexture,EXT,direct_state_access} | @ref AbstractTexture::bind() |
||||
@fn_gl{BindTextures} | | |
||||
@fn_gl{BindTransformFeedback} | | |
||||
@fn_gl{BindVertexArray} | not needed, handhled internally in @ref Mesh |
||||
@fn_gl{BindVertexBuffer} | | |
||||
@fn_gl{BindVertexBuffers} | | |
||||
@fn_gl{BlendColor} | @ref Renderer::setBlendColor() |
||||
@fn_gl{BlendEquation}, \n @fn_gl{BlendEquationSeparate} | @ref Renderer::setBlendEquation() |
||||
@fn_gl{BlendFunc}, \n @fn_gl{BlendFuncSeparate} | @ref Renderer::setBlendFunction() |
||||
@fn_gl{BlitFramebuffer} | @ref AbstractFramebuffer::blit() |
||||
@fn_gl{BufferData}, \n @fn_gl_extension{NamedBufferData,EXT,direct_state_access} | @ref Buffer::setData() |
||||
@fn_gl{BufferStorage} | | |
||||
@fn_gl{BufferSubData}, \n @fn_gl_extension{NamedBufferSubData,EXT,direct_state_access} | @ref Buffer::setSubData() |
||||
@fn_gl{CheckFramebufferStatus}, \n @fn_gl_extension{CheckNamedFramebufferStatus,EXT,direct_state_access} | @ref DefaultFramebuffer::checkStatus(), \n @ref Framebuffer::checkStatus() |
||||
@fn_gl{ClampColor} | | |
||||
@fn_gl{Clear} | @ref AbstractFramebuffer::clear() |
||||
@fn_gl{ClearBuffer} | | |
||||
@fn_gl{ClearBufferData} | | |
||||
@fn_gl{ClearBufferSubData} | | |
||||
@fn_gl{ClearColor} | @ref Renderer::setClearColor() |
||||
@fn_gl{ClearDepth} | @ref Renderer::setClearDepth() |
||||
@fn_gl{ClearStencil} | @ref Renderer::setClearStencil() |
||||
@fn_gl{ClearTexImage} | | |
||||
@fn_gl{ClearTexSubImage} | | |
||||
@fn_gl{ClientWaitSync} | | |
||||
@fn_gl{ColorMask} | @ref Renderer::setColorMask() |
||||
@fn_gl{CompileShader} | @ref Shader::compile() |
||||
@fn_gl{CompressedTexImage1D}, \n @fn_gl{CompressedTexImage2D}, \n @fn_gl{CompressedTexImage3D} | | |
||||
@fn_gl{CompressedTexSubImage1D}, \n @fn_gl{CompressedTexSubImage2D}, \n @fn_gl{CompressedTexSubImage3D} | | |
||||
@fn_gl{CopyBufferSubData}, \n @fn_gl_extension{NamedCopyBufferSubData,EXT,direct_state_access} | @ref Buffer::copy() |
||||
@fn_gl{CopyImageSubData} | | |
||||
@fn_gl{CopyTexImage1D}, \n @fn_gl{CopyTexImage2D} | | |
||||
@fn_gl{CopyTexSubImage1D}, \n @fn_gl{CopyTexSubImage2D}, \n @fn_gl{CopyTexSubImage3D} | | |
||||
@fn_gl{CreateProgram}, @fn_gl{DeleteProgram} | @ref AbstractShaderProgram constructor and destructor |
||||
@fn_gl{CreateShader}, @fn_gl{DeleteShader} | @ref Shader constructor and destructor |
||||
@fn_gl{CreateShaderProgram} | | |
||||
@fn_gl{CullFace} | @ref Renderer::setFaceCullingMode() |
||||
@fn_gl{DebugMessageCallback} | @ref DebugMessage::setCallback() |
||||
@fn_gl{DebugMessageControl} | | |
||||
@fn_gl{DebugMessageInsert}, \n @fn_gl_extension2{InsertEventMarker,EXT,debug_marker}, \n @fn_gl_extension{StringMarker,GREMEDY,string_marker} | @ref DebugMessage::insert() |
||||
@fn_gl{DepthFunc} | @ref Renderer::setDepthFunction() |
||||
@fn_gl{DepthMask} | @ref Renderer::setDepthMask() |
||||
@fn_gl{DepthRange} | | |
||||
@fn_gl{DepthRangeArray} | | |
||||
@fn_gl{DepthRangeIndexed} | | |
||||
@fn_gl{DetachShader} | | |
||||
@fn_gl{DispatchCompute} | | |
||||
@fn_gl{DispatchComputeIndirect} | | |
||||
@fn_gl{DrawArrays}, \n @fn_gl{DrawElements}, \n @fn_gl{DrawRangeElements} | @ref Mesh::draw() |
||||
@fn_gl{DrawArraysIndirect}, \n @fn_gl{DrawArraysInstanced}, \n @fn_gl{DrawArraysInstancedBaseInstance}, \n @fn_gl{DrawElementsBaseVertex}, \n @fn_gl{DrawElementsIndirect}, \n @fn_gl{DrawElementsInstanced}, \n @fn_gl{DrawElementsInstancedBaseInstance}, \n @fn_gl{DrawElementsInstancedBaseVertex}, \n @fn_gl{DrawElementsInstancedBaseVertexBaseInstance}, \n @fn_gl{DrawRangeElementsBaseVertex} | | |
||||
@fn_gl{DrawBuffer}, \n @fn_gl_extension{FramebufferDrawBuffers,EXT,direct_state_access}, \n @fn_gl{DrawBuffers}, \n @fn_gl_extension{FramebufferDrawBuffers,EXT,direct_state_access} | @ref DefaultFramebuffer::mapForDraw(), \n @ref Framebuffer::mapForDraw() |
||||
@fn_gl{DrawTransformFeedback}, \n @fn_gl{DrawTransformFeedbackInstanced}, \n @fn_gl{DrawTransformFeedbackStream}, \n @fn_gl{DrawTransformFeedbackStreamInstanced} | | |
||||
@fn_gl{Enable}, `glDisable()` | @ref Renderer::setFeature() |
||||
@fn_gl{EnableVertexAttribArray}, \n @fn_gl_extension{EnableVertexArrayAttrib,EXT,direct_state_access} \n @fn_gl2{DisableVertexAttribArray,EnableVertexAttribArray}, \n @fn_gl_extension{DisableVertexArrayAttrib,EXT,direct_state_access} | @ref Mesh::addVertexBuffer() |
||||
@fn_gl{FenceSync}, @fn_gl{DeleteSync} | | |
||||
@fn_gl{Finish} | @ref Renderer::finish() |
||||
@fn_gl{Flush} | @ref Renderer::flush() |
||||
@fn_gl{FlushMappedBufferRange}, \n @fn_gl_extension{FlushMappedNamedBufferRange,EXT,direct_state_access} | @ref Buffer::flushMappedRange() |
||||
@fn_gl2{FramebufferParameter,FramebufferParameteri} | | |
||||
@fn_gl{FramebufferRenderbuffer}, \n @fn_gl_extension{NamedFramebufferRenderbuffer,EXT,direct_state_access} | @ref Framebuffer::attachRenderbuffer() |
||||
@fn_gl{FramebufferTexture} | | |
||||
@fn_gl2{FramebufferTexture1D,FramebufferTexture}, \n @fn_gl_extension{NamedFramebufferTexture1D,EXT,direct_state_access} | @ref Framebuffer::attachTexture1D() |
||||
@fn_gl2{FramebufferTexture2D,FramebufferTexture}, \n @fn_gl_extension{NamedFramebufferTexture2D,EXT,direct_state_access} | @ref Framebuffer::attachTexture2D() |
||||
@fn_gl2{FramebufferTexture3D,FramebufferTexture}, \n @fn_gl_extension{NamedFramebufferTexture3D,EXT,direct_state_access} | @ref Framebuffer::attachTexture3D() |
||||
@fn_gl{FramebufferTextureLayer} | | |
||||
@fn_gl{FrontFace} | @ref Renderer::setFrontFace() |
||||
@fn_gl{GenBuffers}, @fn_gl{DeleteBuffers} | @ref Buffer constructor and destructor |
||||
@fn_gl{GenFramebuffers}, @fn_gl{DeleteFramebuffers} | @ref Framebuffer constructor and destructor |
||||
@fn_gl{GenProgramPipelines}, @fn_gl{DeleteProgramPipelines} | | |
||||
@fn_gl{GenQueries}, @fn_gl{DeleteQueries} | @ref AbstractQuery constructor and destructor |
||||
@fn_gl{GenRenderbuffers}, @fn_gl{DeleteRenderbuffers} | @ref Renderbuffer constructor and destructor |
||||
@fn_gl{GenSamplers}, @fn_gl{DeleteSamplers} | | |
||||
@fn_gl{GenTextures}, @fn_gl{DeleteTextures} | @ref AbstractTexture constructor and destructor |
||||
@fn_gl{GenTransformFeedbacks}, @fn_gl{DeleteTransformFeedbacks} | | |
||||
@fn_gl{GenVertexArrays}, @fn_gl{DeleteVertexArrays} | @ref Mesh constructor and destructor |
||||
@fn_gl{GenerateMipmap}, \n @fn_gl_extension{GenerateTextureMipmap,EXT,direct_state_access} | @ref AbstractTexture::generateMipmap() |
||||
@fn_gl{Get} | see @ref opengl-mapping-state "table below" |
||||
@fn_gl2{GetActiveAtomicCounterBuffer,GetActiveAtomicCounterBufferiv} | not queryable |
||||
@fn_gl{GetActiveAttrib}, \n @fn_gl{GetActiveSubroutineName}, \n @fn_gl{GetActiveSubroutineUniform}, \n @fn_gl{GetActiveSubroutineUniformName}, \n @fn_gl{GetActiveUniform}, \n @fn_gl{GetActiveUniformBlock}, \n @fn_gl{GetActiveUniformBlockName}, \n @fn_gl{GetActiveUniformName}, \n @fn_gl{GetActiveUniforms} | not queryable |
||||
@fn_gl{GetAttachedShaders} | not queryable, @ref AbstractShaderProgram::attachShader() setter only |
||||
@fn_gl{GetAttribLocation} | not queryable, @ref AbstractShaderProgram::bindAttributeLocation() setter only |
||||
@fn_gl{GetBufferParameter}, \n @fn_gl_extension{GetNamedBufferParameter,EXT,direct_state_access} | @ref Buffer::size() |
||||
@fn_gl2{GetBufferPointer,GetBufferPointerv} | not queryable, @ref Buffer::map() setter only |
||||
@fn_gl{GetBufferSubData}, \n @fn_gl_extension{GetNamedBufferSubData,EXT,direct_state_access} | @ref Buffer::data(), \n @ref Buffer::subData() |
||||
@fn_gl{GetCompressedTexImage} | | |
||||
@fn_gl{GetDebugMessageLog} | | |
||||
@fn_gl{GetError} | @ref Renderer::error() |
||||
@fn_gl{GetFragDataIndex}, @fn_gl{GetFragDataLocation} | not queryable, @ref AbstractShaderProgram::bindFragmentDataLocation() and \n @ref AbstractShaderProgram::bindFragmentDataLocationIndexed() setters only |
||||
@fn_gl{GetFramebufferAttachmentParameter} | not queryable, @ref Framebuffer setters only |
||||
@fn_gl{GetFramebufferParameter} | not queryable, @ref DefaultFramebuffer and \n @ref Framebuffer setters only |
||||
@fn_gl_extension{GetGraphicsResetStatus,ARB,robustness} | @ref Renderer::graphicsResetStatus() |
||||
@fn_gl{GetInternalformat} | | |
||||
@fn_gl{GetMultisample} | | |
||||
@fn_gl{GetObjectLabel}, \n @fn_gl{GetObjectPtrLabel} | not queryable, @ref AbstractShaderProgram::setLabel(), \n @ref AbstractQuery::setLabel(), \n @ref AbstractTexture::setLabel(), \n @ref Buffer::setLabel(), \n @ref Framebuffer::setLabel(), \n @ref Mesh::setLabel(), \n @ref Renderbuffer::setLabel() and \n @ref Shader::setLabel() setters only |
||||
@fn_gl{GetProgram}, \n @fn_gl{GetProgramInfoLog} | @ref AbstractShaderProgram::link(), \n @ref AbstractShaderProgram::validate() |
||||
@fn_gl{GetProgramBinary} | | |
||||
@fn_gl{GetProgramInterface} | | |
||||
@fn_gl{GetProgramPipeline} | | |
||||
@fn_gl{GetProgramPipelineInfoLog} | | |
||||
@fn_gl{GetProgramResource} | | |
||||
@fn_gl{GetProgramResourceIndex} | | |
||||
@fn_gl{GetProgramResourceLocation} | | |
||||
@fn_gl{GetProgramResourceLocationIndex}| | |
||||
@fn_gl{GetProgramResourceName} | | |
||||
@fn_gl{GetProgramStage} | | |
||||
@fn_gl{GetQueryIndexed} | | |
||||
@fn_gl{GetQueryObject} | @ref AbstractQuery::result() |
||||
@fn_gl2{GetQuery,GetQueryiv} | | |
||||
@fn_gl{GetRenderbufferParameter} | not queryable, @ref Renderbuffer::setStorage() and \n @ref Renderbuffer::setStorageMultisample() setter only |
||||
@fn_gl{GetSamplerParameter} | | |
||||
@fn_gl{GetShader}, \n @fn_gl{GetShaderInfoLog} | @ref Shader::compile() |
||||
@fn_gl{GetShaderPrecisionFormat} | | |
||||
@fn_gl{GetShaderSource} | not queryable but tracked in @ref Shader::sources() |
||||
@fn_gl{GetString} | @ref Context::supportedExtensions(), \n @ref Context::rendererString(), \n @ref Context::shadingLanguageVersionString(), \n @ref Context::vendorString(), \n @ref Context::versionString() |
||||
@fn_gl{GetSubroutineIndex} | | |
||||
@fn_gl{GetSubroutineUniformLocation} | | |
||||
@fn_gl{GetSync} | | |
||||
@fn_gl{GetTexImage}, \n @fn_gl_extension{GetTextureImage,EXT,direct_state_access}, \n @fn_gl_extension{GetnTexImage,ARB,robustness} | @ref Texture::image(), \n @ref CubeMapTexture::image(), \n @ref CubeMapTextureArray::image() |
||||
@fn_gl{GetTexLevelParameter}, \n @fn_gl_extension{GetTextureLevelParameter,EXT,direct_state_access} | @ref Texture::imageSize(), \n @ref CubeMapTexture::imageSize(), \n @ref CubeMapTextureArray::imageSize() |
||||
@fn_gl{GetTexParameter} | | |
||||
@fn_gl{GetTransformFeedbackVarying} | | |
||||
@fn_gl{GetUniform} | not queryable, @ref AbstractShaderProgram::setUniform() setter only |
||||
@fn_gl{GetUniformBlockIndex} | | |
||||
@fn_gl{GetUniformIndices} | | |
||||
@fn_gl{GetUniformLocation} | @ref AbstractShaderProgram::uniformLocation() |
||||
@fn_gl{GetUniformSubroutine} | | |
||||
@fn_gl{GetVertexAttrib} | not queryable, @ref Mesh::addVertexBuffer() setter only |
||||
@fn_gl{InvalidateBufferData} | @ref Buffer::invalidateData() |
||||
@fn_gl{InvalidateBufferSubData} | @ref Buffer::invalidateSubData() |
||||
@fn_gl{InvalidateFramebuffer}, \n @fn_gles_extension{DiscardFramebuffer,EXT,discard_framebuffer} | @ref DefaultFramebuffer::invalidate(), \n @ref Framebuffer::invalidate() |
||||
@fn_gl{InvalidateSubFramebuffer}, \n @fn_gles_extension{DiscardSubFramebuffer,EXT,discard_framebuffer} | @ref DefaultFramebuffer::invalidate(), \n @ref Framebuffer::invalidate() |
||||
@fn_gl{InvalidateTexImage} | @ref AbstractTexture::invalidateImage() |
||||
@fn_gl{InvalidateTexSubImage} | @ref Texture::invalidateSubImage(),\n @ref CubeMapTexture::invalidateSubImage(), \n @ref CubeMapTextureArray::invalidateSubImage() |
||||
@fn_gl{IsBuffer}, \n @fn_gl{IsFramebuffer}, \n @fn_gl{IsProgram}, \n @fn_gl{IsProgramPipeline}, \n @fn_gl{IsQuery}, \n @fn_gl{IsRenderbuffer}, \n @fn_gl{IsSampler}, \n @fn_gl{IsShader}, \n @fn_gl{IsSync}, \n @fn_gl{IsTexture}, \n @fn_gl{IsTransformFeedback}, \n @fn_gl{IsVertexArray} | not needed, objects are strongly typed |
||||
@fn_gl{IsEnabled} | not queryable, @ref Renderer::setFeature() setter only |
||||
@fn_gl{LineWidth} | @ref Renderer::setLineWidth() |
||||
@fn_gl{LinkProgram} | @ref AbstractShaderProgram::link() |
||||
@fn_gl{LogicOp} | @ref Renderer::setLogicOperation() |
||||
@fn_gl{MapBuffer}, `glUnmapBuffer()`, \n @fn_gl_extension{MapNamedBuffer,EXT,direct_state_access}, @fn_gl_extension{UnmapNamedBuffer,EXT,direct_state_access}, \n @fn_gl{MapBufferRange}, \n @fn_gl_extension{MapNamedBufferRange,EXT,direct_state_access} | @ref Buffer::map(), @ref Buffer::unmap() |
||||
@fn_gl_extension{MapBufferSubData,CHROMIUM,map_sub}, @fn_gl_extension{UnmapBufferSubData,CHROMIUM,map_sub} | @ref Buffer::mapSub(), @ref Buffer::unmapSub() |
||||
@fn_gl{MemoryBarrier} | | |
||||
@fn_gl{MinSampleShading} | | |
||||
@fn_gl{MultiDrawArrays}, \n @fn_gl{MultiDrawArraysIndirect}, \n @fn_gl{MultiDrawElements}, \n @fn_gl{MultiDrawElementsBaseVertex}, \n @fn_gl{MultiDrawElementsIndirect} | | |
||||
@fn_gl{ObjectLabel}, \n @fn_gl{ObjectPtrLabel}, \n @fn_gl_extension2{LabelObject,EXT,debug_label} | @ref AbstractShaderProgram::setLabel(), \n @ref AbstractQuery::setLabel(), \n @ref AbstractTexture::setLabel(), \n @ref Buffer::setLabel(), \n @ref Framebuffer::setLabel(), \n @ref Mesh::setLabel(), \n @ref Renderbuffer::setLabel(), \n @ref Shader::setLabel() |
||||
@fn_gl{PatchParameter} | | |
||||
@fn_gl{PauseTransformFeedback}, @fn_gl{ResumeTransformFeedback} | | |
||||
@fn_gl{PixelStore} | | |
||||
@fn_gl{PointParameter} | | |
||||
@fn_gl{PointSize} | @ref Renderer::setPointSize() |
||||
@fn_gl{PolygonMode} | @ref Renderer::setPolygonMode() |
||||
@fn_gl{PolygonOffset} | @ref Renderer::setPolygonOffset() |
||||
@fn_gl{PrimitiveRestartIndex} | | |
||||
@fn_gl{ProgramBinary} | | |
||||
@fn_gl{ProgramParameter} | @ref AbstractShaderProgram::setRetrievableBinary(), \n @ref AbstractShaderProgram::setSeparable() |
||||
@fn_gl{ProvokingVertex} | @ref Renderer::setProvokingVertex() |
||||
@fn_gl{PushDebugGroup}, @fn_gl{PopDebugGroup} | | |
||||
@fn_gl{QueryCounter} | @ref TimeQuery::timestamp() |
||||
@fn_gl{ReadBuffer}, \n @fn_gl_extension{FramebufferReadBuffer,EXT,direct_state_access} | @ref DefaultFramebuffer::mapForRead(), \n @ref Framebuffer::mapForRead() |
||||
@fn_gl{ReadPixels}, \n @fn_gl_extension{ReadnPixels,ARB,robustness} | @ref DefaultFramebuffer::read(), \n @ref Framebuffer::read() |
||||
@fn_gl{ReleaseShaderCompiler} | | |
||||
@fn_gl{RenderbufferStorage}, \n @fn_gl_extension{NamedRenderbufferStorage,EXT,direct_state_access} | @ref Renderbuffer::setStorage() |
||||
@fn_gl{RenderbufferStorageMultisample}, \n @fn_gl_extension{NamedRenderbufferStorageMultisample,EXT,direct_state_access} | @ref Renderbuffer::setStorageMultisample() |
||||
@fn_gl{SampleCoverage} | | |
||||
@fn_gl{SampleMaski} | | |
||||
@fn_gl{SamplerParameter} | | |
||||
@fn_gl{Scissor} | @ref Renderer::setScissor() |
||||
@fn_gl{ScissorArray} | | |
||||
@fn_gl{ScissorIndexed} | | |
||||
@fn_gl{ShaderBinary} | | |
||||
@fn_gl{ShaderSource} | @ref Shader::addFile(), \n @ref Shader::addSource() |
||||
@fn_gl{ShaderStorageBlockBinding} | | |
||||
@fn_gl{StencilFunc}, \n @fn_gl{StencilFuncSeparate} | @ref Renderer::setStencilFunction() |
||||
@fn_gl{StencilMask}, \n @fn_gl{StencilMaskSeparate} | @ref Renderer::setStencilMask() |
||||
@fn_gl{StencilOp}, \n @fn_gl{StencilOpSeparate} | @ref Renderer::setStencilOperation() |
||||
@fn_gl{TexBuffer}, \n @fn_gl_extension{TextureBuffer,EXT,direct_state_access}, \n @fn_gl{TexBufferRange}, \n @fn_gl_extension{TextureBufferRange,EXT,direct_state_access} | @ref BufferTexture::setBuffer() |
||||
@fn_gl{TexImage1D}, \n @fn_gl_extension{TextureImage1D,EXT,direct_state_access} \n @fn_gl{TexImage2D}, \n @fn_gl_extension{TextureImage2D,EXT,direct_state_access}, \n @fn_gl{TexImage3D}, \n @fn_gl_extension{TextureImage3D,EXT,direct_state_access} | @ref Texture::setImage(), \n @ref CubeMapTexture::setImage(), \n @ref CubeMapTextureArray::setImage() |
||||
@fn_gl{TexImage2DMultisample}, \n @fn_gl{TexImage3DMultisample} | | |
||||
@fn_gl{TexParameter}, \n @fn_gl_extension{TextureParameter,EXT,direct_state_access} | @ref AbstractTexture::setMinificationFilter(), \n @ref AbstractTexture::setMagnificationFilter(), \n @ref AbstractTexture::setBorderColor(), \n @ref AbstractTexture::setMaxAnisotropy(), \n @ref Texture::setWrapping(), \n @ref CubeMapTexture::setWrapping(), \n @ref CubeMapTextureArray::setWrapping() |
||||
@fn_gl{TexStorage1D}, \n @fn_gl_extension{TextureStorage1D,EXT,direct_state_access}, \n @fn_gl{TexStorage2D}, \n @fn_gl_extension{TextureStorage2D,EXT,direct_state_access}, \n @fn_gl{TexStorage3D}, \n @fn_gl_extension{TextureStorage3D,EXT,direct_state_access} | @ref Texture::setStorage(), \n @ref CubeMapTexture::setStorage(), \n @ref CubeMapTextureArray::setStorage() |
||||
@fn_gl{TexStorage2DMultisample}, \n @fn_gl{TexStorage3DMultisample} | | |
||||
@fn_gl{TexSubImage1D}, \n @fn_gl_extension{TextureSubImage1D,EXT,direct_state_access}, \n @fn_gl{TexSubImage2D}, \n @fn_gl_extension{TextureSubImage2D,EXT,direct_state_access}, \n @fn_gl{TexSubImage3D}, \n @fn_gl_extension{TextureSubImage3D,EXT,direct_state_access} | @ref Texture::setSubImage(), \n @ref CubeMapTexture::setSubImage(), \n @ref CubeMapTextureArray::setSubImage() |
||||
@fn_gl{TextureView} | | |
||||
@fn_gl{TransformFeedbackVaryings} | | |
||||
@fn_gl{Uniform}, \n @fn_gl{ProgramUniform}, \n @fn_gl_extension{ProgramUniform,EXT,direct_state_access} | @ref AbstractShaderProgram::setUniform() |
||||
@fn_gl{UniformBlockBinding} | | |
||||
@fn_gl{UniformSubroutines} | | |
||||
@fn_gl{UseProgram} | @ref AbstractShaderProgram::use() |
||||
@fn_gl{UseProgramStages} | | |
||||
@fn_gl{ValidateProgram} | @ref AbstractShaderProgram::validate() |
||||
@fn_gl{ValidateProgramPipeline} | | |
||||
@fn_gl{VertexAttrib} | not supported (@ref opengl-unsupported "details") |
||||
@fn_gl{VertexAttribBinding} | | |
||||
@fn_gl{VertexAttribDivisor} | | |
||||
@fn_gl{VertexAttribFormat} | | |
||||
@fn_gl{VertexAttribPointer}, \n @fn_gl_extension{VertexArrayVertexAttribOffset,EXT,direct_state_access} | @ref Mesh::addVertexBuffer() |
||||
@fn_gl{VertexBindingDivisor} | | |
||||
@fn_gl{Viewport} | @ref DefaultFramebuffer::setViewport(), \n @ref Framebuffer::setViewport() |
||||
@fn_gl{ViewportArray} | | |
||||
@fn_gl{ViewportIndexed} | | |
||||
@fn_gl{WaitSync} | | |
||||
|
||||
@section opengl-mapping-state Limit and state queries |
||||
|
||||
@todo Things marked only as *not queryable* should have at least setter |
||||
|
||||
@fn_gl{Get} parameter | Matching API |
||||
-------------------------------------- | ------------ |
||||
@def_gl{ACTIVE_TEXTURE}, \n @def_gl{TEXTURE_BINDING_1D_ARRAY}, \n @def_gl{TEXTURE_BINDING_1D}, \n @def_gl{TEXTURE_BINDING_2D_ARRAY}, \n @def_gl{TEXTURE_BINDING_2D_MULTISAMPLE_ARRAY}, \n @def_gl{TEXTURE_BINDING_2D_MULTISAMPLE}, \n @def_gl{TEXTURE_BINDING_2D} , \n @def_gl{TEXTURE_BINDING_3D}, \n @def_gl{TEXTURE_BINDING_BUFFER}, \n @def_gl{TEXTURE_BINDING_BUFFER}, \n @def_gl{TEXTURE_BINDING_CUBE_MAP}, \n @def_gl{TEXTURE_BINDING_RECTANGLE} | not queryable but tracked internally |
||||
@def_gl{ALIASED_LINE_WIDTH_RANGE} | | |
||||
@def_gl{ARRAY_BUFFER_BINDING}, \n @def_gl{DISPATCH_INDIRECT_BUFFER_BINDING}, \n @def_gl{ELEMENT_ARRAY_BUFFER_BINDING}, \n @def_gl{PIXEL_PACK_BUFFER_BINDING}, \n @def_gl{PIXEL_UNPACK_BUFFER_BINDING} | not queryable but tracked internally |
||||
@def_gl{BLEND_COLOR} | not queryable, @ref Renderer::setBlendColor() setter only |
||||
@def_gl{BLEND_DST_ALPHA}, \n @def_gl{BLEND_DST_RGB}, \n @def_gl{BLEND_SRC_ALPHA}, \n @def_gl{BLEND_SRC_RGB} | not queryable, @ref Renderer::setBlendFunction() setter only |
||||
@def_gl{BLEND_EQUATION_ALPHA}, \n @def_gl{BLEND_EQUATION_RGB} | not queryable, @ref Renderer::setBlendEquation() setter only |
||||
@def_gl{BLEND}, \n @def_gl{COLOR_LOGIC_OP}, \n @def_gl{CULL_FACE}, \n @def_gl{DEBUG_OUTPUT}, \n @def_gl{DEBUG_OUTPUT_SYNCHRONOUS}, \n @def_gl{DEPTH_CLAMP}, \n @def_gl{DEPTH_TEST}, \n @def_gl{DITHER}, \n @def_gl{MULTISAMPLE}, \n @def_gl{POLYGON_OFFSET_FILL}, \n @def_gl{POLYGON_OFFSET_LINE}, \n @def_gl{POLYGON_OFFSET_POINT}, \n @def_gl{PROGRAM_POINT_SIZE}, \n @def_gl{SCISSOR}, \n @def_gl{TEXTURE_CUBE_MAP_SEAMLESS}, \n @def_gl{STENCIL_TEST} | not queryable, @ref Renderer::setFeature() setter only |
||||
@def_gl{COLOR_CLEAR_VALUE}, \n @def_gl{DEPTH_CLEAR_VALUE}, \n @def_gl{STENCIL_CLEAR_VALUE} | not queryable, @ref Renderer::setClearColor(), \n @ref Renderer::setClearDepth() and \n @ref Renderer::setClearStencil() setters only |
||||
@def_gl{COLOR_WRITEMASK}, \n @def_gl{DEPTH_WRITEMASK}, \n @def_gl{STENCIL_BACK_WRITEMASK}, \n @def_gl{STENCIL_WRITEMASK} | not queryable, @ref Renderer::setColorMask(), \n @ref Renderer::setDepthMask() and \n @ref Renderer::setStencilMask() setters only |
||||
@def_gl{COMPRESSED_TEXTURE_FORMATS} | | |
||||
@def_gl{CONTEXT_FLAGS} | @ref Context::flags() |
||||
@def_gl{CURRENT_PROGRAM} | not queryable but tracked internally |
||||
@def_gl{DEBUG_GROUP_STACK_DEPTH} | | |
||||
@def_gl{DEPTH_FUNC} | not queryable, @ref Renderer::setDepthFunction() setter only |
||||
@def_gl{DEPTH_RANGE} | not queryable |
||||
@def_gl{DOUBLEBUFFER}, \n @def_gl{STEREO} | | |
||||
@def_gl{DRAW_BUFFERi}, \n @def_gl{DRAW_BUFFER}, \n @def_gl{READ_BUFFER} | not queryable, @ref DefaultFramebuffer::mapForDraw(), \n @ref DefaultFramebuffer::mapForRead(), \n @ref Framebuffer::mapForDraw() and \n @ref Framebuffer::mapForRead() setters only |
||||
@def_gl{DRAW_FRAMEBUFFER_BINDING}, \n @def_gl{READ_FRAMEBUFFER_BINDING} | not queryable but tracked internally |
||||
@def_gl{FRAGMENT_SHADER_DERIVATIVE_HINT}, \n @def_gl{LINE_SMOOTH_HINT}, \n @def_gl{POLYGON_SMOOTH_HINT}, \n @def_gl{TEXTURE_COMPRESSION_HINT} | not queryable |
||||
@def_gl{IMPLEMENTATION_COLOR_READ_FORMAT} | | |
||||
@def_gl{IMPLEMENTATION_COLOR_READ_TYPE} | | |
||||
@def_gl{LAYER_PROVOKING_VERTEX} | | |
||||
@def_gl{LINE_SMOOTH}, \n @def_gl{POLYGON_SMOOTH} | not supported (@ref opengl-unsupported "details") |
||||
@def_gl{LINE_WIDTH_GRANULARITY}, \n @def_gl{LINE_WIDTH_RANGE} | | |
||||
@def_gl{LINE_WIDTH} | not queryable, @ref Renderer::setLineWidth() setter only |
||||
@def_gl{LOGIC_OP_MODE} | not queryable, @ref Renderer::setLogicOperation() setter only |
||||
@def_gl{MAJOR_VERSION}, \n @def_gl{MINOR_VERSION} | @ref Context::version() |
||||
`GL_MAX_*_ATOMIC_COUNTER_BUFFERS`, \n @def_gl{MAX_COMBINED_ATOMIC_COUNTER_BUFFERS} | @ref Shader::maxAtomicCounterBuffers(), \n @ref Shader::maxCombinedAtomicCounterBuffers() |
||||
`GL_MAX_*_ATOMIC_COUNTERS`, \n @def_gl{MAX_COMBINED_ATOMIC_COUNTERS} | @ref Shader::maxAtomicCounters(), \n @ref Shader::maxCombinedAtomicCounters() |
||||
`GL_MAX_*_IMAGE_UNIFORMS`, \n @def_gl{MAX_COMBINED_IMAGE_UNIFORMS} | @ref Shader::maxImageUniforms(), \n @ref Shader::maxCombinedImageUniforms() |
||||
`GL_MAX_*_SHADER_STORAGE_BLOCKS`, \n @def_gl{MAX_COMBINED_SHADER_STORAGE_BLOCKS} | @ref Shader::maxShaderStorageBlocks(), \n @ref Shader::maxCombinedShaderStorageBlocks() |
||||
`GL_MAX_*_TEXTURE_IMAGE_UNITS`, \n @def_gl{MAX_TEXTURE_IMAGE_UNITS}, \n @def_gl{MAX_COMBINED_TEXTURE_IMAGE_UNITS} | @ref Shader::maxTextureImageUnits(), \n @ref Shader::maxCombinedTextureImageUnits() |
||||
`GL_MAX_*_UNIFORM_BLOCKS`, \n @def_gl{MAX_COMBINED_UNIFORM_BLOCKS} | @ref Shader::maxUniformBlocks(), \n @ref Shader::maxCombinedUniformBlocks() |
||||
`GL_MAX_*_UNIFORM_COMPONENTS`, \n @def_gl{MAX_VERTEX_UNIFORM_VECTORS}, \n @def_gl{MAX_FRAGMENT_UNIFORM_VECTORS} | @ref Shader::maxUniformComponents() |
||||
`GL_MAX_COMBINED_*_UNIFORM_COMPONENTS` | @ref Shader::maxCombinedUniformComponents() |
||||
@def_gl{MAX_3D_TEXTURE_SIZE}, \n @def_gl{MAX_ARRAY_TEXTURE_LAYERS}, \n @def_gl{MAX_CUBE_MAP_TEXTURE_SIZE}, \n @def_gl{MAX_RECTANGLE_TEXTURE_SIZE}, \n @def_gl{MAX_TEXTURE_SIZE} | | |
||||
@def_gl{MAX_ATOMIC_COUNTER_BUFFER_SIZE} | @ref AbstractShaderProgram::maxAtomicCounterBufferSize() |
||||
@def_gl{MAX_ATOMIC_COUNTER_BUFFER_BINDINGS} | @ref Buffer::maxAtomicCounterBindings() |
||||
@def_gl{MAX_COLOR_ATTACHMENTS} | @ref Framebuffer::maxColorAttachments() |
||||
@def_gl{MAX_COMBINED_SHADER_OUTPUT_RESOURCES} | @ref AbstractShaderProgram::maxCombinedShaderOutputResources() |
||||
@def_gl{MAX_COMPUTE_SHARED_MEMORY_SIZE} | @ref AbstractShaderProgram::maxComputeSharedMemorySize() |
||||
@def_gl{MAX_COMPUTE_WORK_GROUP_COUNT} | | |
||||
@def_gl{MAX_COMPUTE_WORK_GROUP_INVOCATIONS} | @ref AbstractShaderProgram::maxComputeWorkGroupInvocations() |
||||
@def_gl{MAX_COMPUTE_WORK_GROUP_SIZE} | | |
||||
@def_gl{MAX_DEBUG_LOGGED_MESSAGES} | @ref DebugMessage::maxLoggedMessages() |
||||
@def_gl{MAX_DEBUG_MESSAGE_LENGTH} | @ref DebugMessage::maxMessageLength() |
||||
@def_gl{MAX_DEBUG_GROUP_STACK_DEPTH} | | |
||||
@def_gl{MAX_CLIP_DISTANCES} | | |
||||
@def_gl{MAX_COLOR_TEXTURE_SAMPLES}, \n @def_gl{MAX_DEPTH_TEXTURE_SAMPLES}, \n @def_gl{MAX_INTEGER_SAMPLES} | @ref AbstractTexture::maxColorSamples(), \n @ref AbstractTexture::maxDepthSamples(), \n @ref AbstractTexture::maxIntegerSamples() |
||||
@def_gl{MAX_DRAW_BUFFERS} | @ref AbstractFramebuffer::maxDrawBuffers() |
||||
@def_gl{MAX_DUAL_SOURCE_DRAW_BUFFERS} | @ref AbstractFramebuffer::maxDualSourceDrawBuffers() |
||||
@def_gl{MAX_ELEMENTS_INDICES} | @ref Mesh::maxElementsIndices() |
||||
@def_gl{MAX_ELEMENTS_VERTICES} | @ref Mesh::maxElementsVertices() |
||||
@def_gl{MAX_ELEMENT_INDEX} | | |
||||
@def_gl{MAX_FRAMEBUFFER_HEIGHT} | | |
||||
@def_gl{MAX_FRAMEBUFFER_LAYERS} | | |
||||
@def_gl{MAX_FRAMEBUFFER_SAMPLES} | | |
||||
@def_gl{MAX_FRAMEBUFFER_WIDTH} | | |
||||
@def_gl{MAX_FRAGMENT_INPUT_COMPONENTS}, \n @def_gl{MAX_GEOMETRY_INPUT_COMPONENTS}, \n @def_gl{MAX_GEOMETRY_OUTPUT_COMPONENTS}, \n @def_gl{MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS}, \n @def_gl{MAX_TESS_CONTROL_INPUT_COMPONENTS}, \n @def_gl{MAX_TESS_CONTROL_OUTPUT_COMPONENTS}, \n @def_gl{MAX_TESS_CONTROL_TOTAL_OUTPUT_COMPONENTS}, \n @def_gl{MAX_TESS_EVALUATION_INPUT_COMPONENTS}, \n @def_gl{MAX_TESS_EVALUATION_OUTPUT_COMPONENTS}, \n @def_gl{MAX_VERTEX_OUTPUT_COMPONENTS}, \n @def_gl{MAX_VARYING_COMPONENTS}, \n @def_gl{MAX_VARYING_FLOATS}, \n @def_gl{MAX_VARYING_VECTORS} | @ref Shader::maxFragmentInputComponents(), \n @ref Shader::maxGeometryInputComponents(), \n @ref Shader::maxGeometryOutputComponents(), \n @ref Shader::maxGeometryTotalOutputComponents(), \n @ref Shader::maxTessellationControlInputComponents(), \n @ref Shader::maxTessellationControlOutputComponents(), \n @ref Shader::maxTessellationControlTotalOutputComponents(), \n @ref Shader::maxTessellationEvaluationInputComponents(), \n @ref Shader::maxTessellationEvaluationOutputComponents(), \n @ref Shader::maxVertexOutputComponents() |
||||
@def_gl{MAX_IMAGE_SAMPLES} | @ref AbstractShaderProgram::maxImageSamples() |
||||
@def_gl{MAX_IMAGE_UNITS} | @ref AbstractShaderProgram::maxImageUnits() |
||||
@def_gl{MAX_LABEL_LENGTH} | @ref AbstractObject::maxLabelLength() |
||||
@def_gl{MAX_RENDERBUFFER_SIZE} | @ref Renderbuffer::maxSize() |
||||
@def_gl{MAX_SAMPLE_MASK_WORDS} | | |
||||
@def_gl{MAX_SERVER_WAIT_TIMEOUT} | | |
||||
@def_gl{MAX_SHADER_STORAGE_BLOCK_SIZE} | @ref AbstractShaderProgram::maxShaderStorageBlockSize() |
||||
@def_gl{MAX_SHADER_STORAGE_BUFFER_BINDINGS} | @ref Buffer::maxShaderStorageBindings() |
||||
@def_gl{MAX_TEXTURE_BUFFER_SIZE} | | |
||||
@def_gl_extension{MAX_TEXTURE_MAX_ANISOTROPY,EXT,texture_filter_anisotropic} | @ref Sampler::maxMaxAnisotropy() |
||||
@def_gl{MAX_TEXTURE_LOD_BIAS} | | |
||||
@def_gl{MAX_UNIFORM_BLOCK_SIZE} | @ref AbstractShaderProgram::maxUniformBlockSize() |
||||
@def_gl{MAX_UNIFORM_BUFFER_BINDINGS} | @ref Buffer::maxUniformBindings() |
||||
@def_gl{MAX_UNIFORM_LOCATIONS} | @ref AbstractShaderProgram::maxUniformLocations() |
||||
@def_gl{MAX_VERTEX_ATTRIBS} | @ref AbstractShaderProgram::maxVertexAttributes() |
||||
@def_gl{MAX_VERTEX_ATTRIB_BINDINGS} | @ref Buffer::maxVertexAttributeBindings() |
||||
@def_gl{MAX_VERTEX_ATTRIB_RELATIVE_OFFSET} | | |
||||
@def_gl{MAX_VIEWPORTS} | | |
||||
@def_gl{MAX_VIEWPORT_DIMS} | @ref AbstractFramebuffer::maxViewportSize() |
||||
@def_gl{MIN_MAP_BUFFER_ALIGNMENT} | @ref Buffer::minMapAlignment() |
||||
@def_gl{MIN_PROGRAM_TEXEL_OFFSET}, \n @def_gl{MAX_PROGRAM_TEXEL_OFFSET} | @ref AbstractShaderProgram::minTexelOffset(), \n @ref AbstractShaderProgram::maxTexelOffset() |
||||
@def_gl{NUM_COMPRESSED_TEXTURE_FORMATS} | | |
||||
@def_gl{NUM_EXTENSIONS} | @ref Context::supportedExtensions() |
||||
@def_gl{NUM_PROGRAM_BINARY_FORMATS}, \n @def_gl{PROGRAM_BINARY_FORMATS} | | |
||||
@def_gl{NUM_SHADER_BINARY_FORMATS}, \n @def_gl{SHADER_BINARY_FORMATS} | | |
||||
@def_gl{PACK_ALIGNMENT}, \n @def_gl{PACK_IMAGE_HEIGHT}, \n @def_gl{PACK_LSB_FIRST}, \n @def_gl{PACK_ROW_LENGTH}, \n @def_gl{PACK_SKIP_IMAGES}, \n @def_gl{PACK_SKIP_PIXELS}, \n @def_gl{PACK_SKIP_ROWS}, \n @def_gl{PACK_SWAP_BYTES}, \n @def_gl{UNPACK_ALIGNMENT}, \n @def_gl{UNPACK_IMAGE_HEIGHT}, \n @def_gl{UNPACK_LSB_FIRST}, \n @def_gl{UNPACK_ROW_LENGTH}, \n @def_gl{UNPACK_SKIP_IMAGES}, \n @def_gl{UNPACK_SKIP_PIXELS}, \n @def_gl{UNPACK_SKIP_ROWS}, \n @def_gl{UNPACK_SWAP_BYTES} | not queryable |
||||
@def_gl{POINT_FADE_THRESHOLD_SIZE} | | |
||||
@def_gl{POINT_SIZE_GRANULARITY}, \n @def_gl{POINT_SIZE_RANGE} | | |
||||
@def_gl{POINT_SIZE} | not queryable, @ref Renderer::setPointSize() setter only |
||||
@def_gl{POLYGON_OFFSET_FACTOR}, \n @def_gl{POLYGON_OFFSET_UNITS} | not queryable, @ref Renderer::setPolygonOffset() setter only |
||||
@def_gl{PRIMITIVE_RESTART_INDEX} | not queryable |
||||
@def_gl{PROGRAM_PIPELINE_BINDING} | not queryable |
||||
@def_gl{PROVOKING_VERTEX} | not queryable, @ref Renderer::setProvokingVertex() setter only |
||||
@def_gl{RENDERBUFFER_BINDING} | not queryable but tracked internally |
||||
@def_gl{SAMPLER_BINDING} | not queryable |
||||
@def_gl{SAMPLES} | @ref Renderbuffer::maxSamples() |
||||
@def_gl{SAMPLE_BUFFERS} | | |
||||
@def_gl{SAMPLE_COVERAGE_INVERT}, \n @def_gl{SAMPLE_COVERAGE_VALUE} | | |
||||
@def_gl{SCISSOR_BOX} | not queryable, @ref Renderer::setScissor() setter only |
||||
@def_gl{SHADER_COMPILER} | not supported (@ref opengl-unsupported "details") |
||||
@def_gl{SHADER_STORAGE_BUFFER_BINDING}, \n @def_gl{SHADER_STORAGE_BUFFER_SIZE}, \n @def_gl{SHADER_STORAGE_BUFFER_START} | not queryable |
||||
@def_gl{SHADER_STORAGE_BUFFER_OFFSET_ALIGNMENT} | @ref Buffer::shaderStorageOffsetAlignment() |
||||
@def_gl{SMOOTH_LINE_WIDTH_GRANULARITY}, \n @def_gl{SMOOTH_LINE_WIDTH_RANGE} | | |
||||
@def_gl{STENCIL_BACK_FUNC}, \n @def_gl{STENCIL_BACK_REF}, \n @def_gl{STENCIL_BACK_VALUE_MASK}, \n @def_gl{STENCIL_FUNC}, \n @def_gl{STENCIL_REF}, \n @def_gl{STENCIL_VALUE_MASK} | not queryable, @ref Renderer::setStencilFunction() setter only |
||||
@def_gl{STENCIL_BACK_FAIL}, \n @def_gl{STENCIL_BACK_PASS_DEPTH_FAIL}, \n @def_gl{STENCIL_BACK_PASS_DEPTH_PASS}, \n @def_gl{STENCIL_FAIL}, \n @def_gl{STENCIL_PASS_DEPTH_FAIL}, \n @def_gl{STENCIL_PASS_DEPTH_PASS} | not queryable, @ref Renderer::setStencilOperation() setter only |
||||
@def_gl{SUBPIXEL_BITS} | | |
||||
@def_gl{TEXTURE_BUFFER_OFFSET_ALIGNMENT} | @ref BufferTexture::offsetAlignment() |
||||
@def_gl{TIMESTAMP} | | |
||||
@def_gl{TRANSFORM_FEEDBACK_BUFFER_BINDING}, \n @def_gl{TRANSFORM_FEEDBACK_BUFFER_SIZE}, \n @def_gl{TRANSFORM_FEEDBACK_BUFFER_START} | not queryable |
||||
@def_gl{UNIFORM_BUFFER_OFFSET_ALIGNMENT} | | |
||||
@def_gl{UNIFORM_BUFFER_BINDING}, \n @def_gl{UNIFORM_BUFFER_SIZE}, \n @def_gl{UNIFORM_BUFFER_START} | not queryable |
||||
@def_gl{VERTEX_BINDING_DIVISOR}, \n @def_gl{VERTEX_BINDING_OFFSET}, \n @def_gl{VERTEX_BINDING_STRIDE} | not queryable |
||||
@def_gl{VERTEX_PROGRAM_POINT_SIZE} | not queryable |
||||
@def_gl{VIEWPORT_BOUNDS_RANGE} | | |
||||
@def_gl{VIEWPORT_INDEX_PROVOKING_VERTEX} | | |
||||
@def_gl{VIEWPORT_SUBPIXEL_BITS} | | |
||||
@def_gl{VIEWPORT} | not queryable but tracked in @ref AbstractFramebuffer::viewport() |
||||
|
||||
*/ |
||||
|
||||
} |
||||
@ -0,0 +1,342 @@
|
||||
/* |
||||
This file is part of Magnum. |
||||
|
||||
Copyright © 2010, 2011, 2012, 2013 Vladimír Vondruš <mosra@centrum.cz> |
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a |
||||
copy of this software and associated documentation files (the "Software"), |
||||
to deal in the Software without restriction, including without limitation |
||||
the rights to use, copy, modify, merge, publish, distribute, sublicense, |
||||
and/or sell copies of the Software, and to permit persons to whom the |
||||
Software is furnished to do so, subject to the following conditions: |
||||
|
||||
The above copyright notice and this permission notice shall be included |
||||
in all copies or substantial portions of the Software. |
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
||||
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
||||
DEALINGS IN THE SOFTWARE. |
||||
*/ |
||||
|
||||
/** @page opengl-support OpenGL support state |
||||
@brief List of (un)supported OpenGL features and extensions. |
||||
|
||||
@tableofcontents |
||||
|
||||
@section opengl-support-state OpenGL implementation state |
||||
|
||||
The extension implementation is considered complete if all its defined types, |
||||
functions and enum values are exposed through the API, except for features |
||||
listed below in @ref opengl-unsupported-features. |
||||
|
||||
@subsection opengl-support-21 OpenGL 2.1 |
||||
|
||||
The core subset of OpenGL 2.1 should be fully implemented, except for the |
||||
following: |
||||
|
||||
- Pixel store state (@fn_gl{PixelStore} function) |
||||
- Compressed texture upload |
||||
- Proxy textures |
||||
- Copying framebuffer to texture (@fn_gl{CopyTexImage2D} etc.) |
||||
- Some forgotten limit queries |
||||
|
||||
@subsection opengl-support-30 OpenGL 3.0 |
||||
|
||||
@todo @extension{APPLE,flush_buffer_range} doesn't add anything to @extension{ARB,map_buffer_range} |
||||
@todo @extension{EXT,texture_array} overlaps with @extension{ARB,framebuffer_object} |
||||
|
||||
%Extension | Status |
||||
-------------------------------------------- | ------ |
||||
@extension{APPLE,flush_buffer_range} | done (GL 3.0 subset) |
||||
@extension{APPLE,vertex_array_object} | done (GL 3.0 subset) |
||||
@extension{ARB,map_buffer_range} | done |
||||
@extension{ARB,color_buffer_float} | | |
||||
@extension{ARB,half_float_pixel} | done |
||||
@extension{ARB,texture_float} | done |
||||
@extension{ARB,depth_buffer_float} | done |
||||
@extension{ARB,texture_rg} | done |
||||
@extension{ARB,framebuffer_object} | missing texture layer attachments |
||||
@extension{EXT,gpu_shader4} | done |
||||
@extension{EXT,packed_float} | done |
||||
@extension{EXT,texture_array} | missing texture layer attachments |
||||
@extension{EXT,texture_compression_rgtc} | done |
||||
@extension{EXT,texture_shared_exponent} | done |
||||
@extension{EXT,framebuffer_sRGB} | | |
||||
@extension{EXT,draw_buffers2} | | |
||||
@extension{EXT,texture_integer} | missing integer color specification functions |
||||
@extension{EXT,transform_feedback} | | |
||||
@extension{NV,half_float} | done (GL 3.0 subset) |
||||
@extension{NV,depth_buffer_float} | | |
||||
@extension{NV,conditional_render} | done |
||||
|
||||
@subsection opengl-support-31 OpenGL 3.1 |
||||
|
||||
%Extension | Status |
||||
-------------------------------------------- | ------ |
||||
@extension{ARB,texture_rectangle} | missing limit query |
||||
@extension{ARB,draw_instanced} | | |
||||
@extension{ARB,texture_buffer_object} | missing limit query |
||||
@extension{ARB,uniform_buffer_object} | | |
||||
@extension{ARB,copy_buffer} | done |
||||
@extension{EXT,texture_snorm} | done |
||||
@extension{NV,primitive_restart} | | |
||||
|
||||
@subsection opengl-support-32 OpenGL 3.2 |
||||
|
||||
%Extension | Status |
||||
-------------------------------------------- | ------ |
||||
@extension{ARB,geometry_shader4} | done (GL 3.2 subset) |
||||
@extension{ARB,depth_clamp} | done |
||||
@extension{ARB,draw_elements_base_vertex} | | |
||||
@extension{ARB,fragment_coord_conventions} | done (shading language only) |
||||
@extension{ARB,provoking_vertex} | done |
||||
@extension{ARB,seamless_cube_map} | done |
||||
@extension{ARB,sync} | | |
||||
@extension{ARB,texture_multisample} | | |
||||
@extension{ARB,vertex_array_bgra} | done |
||||
|
||||
@subsection opengl-support-33 OpenGL 3.3 |
||||
|
||||
%Extension | Status |
||||
-------------------------------------------- | ------ |
||||
@extension{ARB,instanced_arrays} | | |
||||
@extension{ARB,blend_func_extended} | missing limit query |
||||
@extension{ARB,explicit_attrib_location} | done (shading language only) |
||||
@extension{ARB,occlusion_query2} | done |
||||
@extension{ARB,sampler_objects} | | |
||||
@extension{ARB,shader_bit_encoding} | done (shading language only) |
||||
@extension{ARB,texture_rgb10_a2ui} | done |
||||
@extension{ARB,texture_swizzle} | | |
||||
@extension{ARB,timer_query} | missing direct query |
||||
@extension{ARB,vertex_type_2_10_10_10_rev} | done |
||||
|
||||
@subsection opengl-support-40 OpenGL 4.0 |
||||
|
||||
%Extension | Status |
||||
-------------------------------------------- | ------ |
||||
@extension{ARB,draw_buffers_blend} | | |
||||
@extension{ARB,sample_shading} | | |
||||
@extension{ARB,texture_cube_map_array} | done |
||||
@extension{ARB,texture_gather} | missing limit queries |
||||
@extension{ARB,texture_query_lod} | done (shading language only) |
||||
@extension{ARB,draw_indirect} | | |
||||
@extension{ARB,gpu_shader5} | missing limit queries |
||||
@extension{ARB,gpu_shader_fp64} | done |
||||
@extension{ARB,shader_subroutine} | | |
||||
@extension{ARB,tessellation_shader} | missing some limit queries and patch parameter specification function |
||||
@extension{ARB,texture_buffer_object_rgb32} | done |
||||
@extension{ARB,transform_feedback2} | | |
||||
@extension{ARB,transform_feedback3} | | |
||||
|
||||
@subsection opengl-support-41 OpenGL 4.1 |
||||
|
||||
%Extension | Status |
||||
-------------------------------------------- | ------ |
||||
@extension{ARB,ES2_compatibility} | only float depth clear |
||||
@extension{ARB,get_program_binary} | | |
||||
@extension{ARB,separate_shader_objects} | | |
||||
@extension{ARB,shader_precision} | done (shading language only) |
||||
@extension{ARB,vertex_attrib_64bit} | done |
||||
@extension{ARB,viewport_array} | | |
||||
|
||||
@subsection opengl-support-42 OpenGL 4.2 |
||||
|
||||
%Extension | Status |
||||
-------------------------------------------- | ------ |
||||
@extension{ARB,texture_compression_bptc} | done |
||||
@extension{ARB,base_instance} | | |
||||
@extension{ARB,shading_language_420pack} | done (shading language only) |
||||
@extension{ARB,transform_feedback_instanced} | | |
||||
@extension{ARB,compressed_texture_pixel_storage} | | |
||||
@extension{ARB,conservative_depth} | done (shading language only) |
||||
@extension{ARB,internalformat_query} | | |
||||
@extension{ARB,map_buffer_alignment} | done |
||||
@extension{ARB,shader_atomic_counters} | | |
||||
@extension{ARB,shader_image_load_store} | | |
||||
@extension{ARB,shading_language_packing} | done (shading language only) |
||||
@extension{ARB,texture_storage} | done |
||||
|
||||
@subsection opengl-support-43 OpenGL 4.3 |
||||
|
||||
%Extension | Status |
||||
-------------------------------------------- | ------ |
||||
@extension{ARB,arrays_of_arrays} | done (shading language only) |
||||
@extension{ARB,ES3_compatibility} | only conservative sample query |
||||
@extension{ARB,clear_buffer_object} | | |
||||
@extension{ARB,compute_shader} | | |
||||
@extension{ARB,copy_image} | | |
||||
@extension{KHR,debug} (also in ES) | missing log control and retrieval, sync, pipeline, transform feedback and sampler label and debug groups |
||||
@extension{ARB,explicit_uniform_location} | done |
||||
@extension{ARB,fragment_layer_viewport} | done (shading language only) |
||||
@extension{ARB,framebuffer_no_attachments} | | |
||||
@extension{ARB,internalformat_query2} | | |
||||
@extension{ARB,invalidate_subdata} | done |
||||
@extension{ARB,multi_draw_indirect} | | |
||||
@extension{ARB,program_interface_query} | | |
||||
@extension{ARB,robust_buffer_access_behavior} | done (nothing to do) |
||||
@extension{ARB,shader_image_size} | done (shading language only) |
||||
@extension{ARB,shader_storage_buffer_object} | only limit queries |
||||
@extension{ARB,stencil_texturing} | | |
||||
@extension{ARB,texture_buffer_range} | done |
||||
@extension{ARB,texture_query_levels} | done (shading language only) |
||||
@extension{ARB,texture_storage_multisample} | | |
||||
@extension{ARB,texture_view} | | |
||||
@extension{ARB,vertex_attrib_binding} | | |
||||
|
||||
@subsection opengl-support-44 OpenGL 4.4 |
||||
|
||||
%Extension | Status |
||||
-------------------------------------------- | ------ |
||||
@extension{ARB,buffer_storage} | | |
||||
@extension{ARB,clear_texture} | | |
||||
@extension{ARB,enhanced_layouts} | done (shading language only) |
||||
@extension{ARB,multi_bind} | | |
||||
@extension{ARB,query_buffer_object} | | |
||||
@extension{ARB,texture_mirror_clamp_to_edge} | done |
||||
@extension{ARB,texture_stencil8} | done |
||||
@extension{ARB,vertex_type_10f_11f_11f_rev} | | |
||||
|
||||
@subsection opengl-support-extensions OpenGL extensions |
||||
|
||||
%Extension | Status |
||||
-------------------------------------------- | ------ |
||||
@extension{AMD,vertex_shader_layer} | done (shading language only) |
||||
@extension{AMD,shader_trinary_minmax} | done (shading language only) |
||||
@extension{ARB,robustness} | done |
||||
@extension{ATI,texture_mirror_once} | done (GL 4.4 subset) |
||||
@extension{EXT,texture_filter_anisotropic} (also in ES) | done |
||||
@extension{EXT,texture_mirror_clamp} | only GL 4.4 subset |
||||
@extension{EXT,direct_state_access} | done for implemented functionality |
||||
@extension2{EXT,debug_label} (also in ES) | missing pipeline, transform feedback and sampler label |
||||
@extension2{EXT,debug_marker} (also in ES) | missing marker groups |
||||
@extension{GREMEDY,string_marker} | done |
||||
|
||||
@subsection opengl-support-es20 OpenGL ES 2.0 |
||||
|
||||
Features that have their equivalents implemented in desktop version are |
||||
supported. |
||||
|
||||
@subsection opengl-support-es30 OpenGL ES 3.0 |
||||
|
||||
Features that have their equivalents implemented in desktop version are |
||||
supported. |
||||
|
||||
@subsection opengl-support-es30-extensions OpenGL ES 2.0 extensions to match ES 3.0 functionality |
||||
|
||||
%Extension | Status |
||||
-------------------------------------------- | ------ |
||||
@es_extension{ANGLE,framebuffer_blit} | done |
||||
@es_extension{ANGLE,framebuffer_multisample} | done |
||||
@es_extension{ANGLE,depth_texture} | done |
||||
@es_extension{APPLE,framebuffer_multisample} | done (ES 3.0 subset) |
||||
@es_extension{ARM,rgba8} | done |
||||
@es_extension{EXT,texture_type_2_10_10_10_REV} | done |
||||
@es_extension{EXT,discard_framebuffer} | done |
||||
@es_extension2{EXT,blend_minmax,blend_minmax} | done |
||||
@es_extension{EXT,occlusion_query_boolean} | done |
||||
@es_extension{EXT,texture_rg} | done |
||||
@es_extension{EXT,texture_storage} | done |
||||
@es_extension{EXT,map_buffer_range} | done |
||||
@es_extension{NV,draw_buffers} | done |
||||
@es_extension{NV,fbo_color_attachments} | done |
||||
@es_extension{NV,read_buffer} | done |
||||
@es_extension{NV,framebuffer_blit} | done |
||||
@es_extension{NV,framebuffer_multisample} | done |
||||
@es_extension{OES,depth24} | done |
||||
@es_extension{OES,element_index_uint} | done |
||||
@es_extension{OES,rgb8_rgba8} | done (desktop-compatible subset) |
||||
@es_extension2{OES,texture_half_float_linear,OES_texture_float_linear} | done |
||||
@es_extension{OES,texture_float_linear} | done |
||||
@es_extension2{OES,texture_half_float,OES_texture_float} | done |
||||
@es_extension{OES,texture_float} | done |
||||
@es_extension{OES,vertex_half_float} | done |
||||
@es_extension{OES,packed_depth_stencil} | done |
||||
@es_extension{OES,depth_texture} | done |
||||
@es_extension{OES,standard_derivatives} | done |
||||
@es_extension{OES,vertex_array_object} | done |
||||
@es_extension{OES,required_internalformat} | done (desktop-compatible subset) |
||||
@es_extension{OES,surfaceless_context} | done |
||||
|
||||
@subsection opengl-support-es-extensions OpenGL ES extensions to match desktop functionality |
||||
|
||||
Only extensions not already listed in above tables are included here. |
||||
|
||||
%Extension | Status |
||||
-------------------------------------------- | ------ |
||||
@es_extension{APPLE,texture_format_BGRA8888} | done |
||||
@es_extension{CHROMIUM,map_sub} | only buffer mapping |
||||
@es_extension{EXT,texture_format_BGRA8888} | done |
||||
@es_extension{EXT,read_format_bgra} | done |
||||
@es_extension{EXT,disjoint_timer_query} | only time elapsed query |
||||
@es_extension{EXT,separate_shader_objects} | | |
||||
@es_extension{EXT,sRGB} | done |
||||
@es_extension{EXT,multisampled_render_to_texture} | only renderbuffer storage |
||||
@es_extension{EXT,robustness} | done |
||||
@es_extension2{NV,read_buffer_front,NV_read_buffer} | done |
||||
@es_extension2{NV,read_depth,NV_read_depth_stencil} | done |
||||
@es_extension2{NV,read_stencil,NV_read_depth_stencil} | done |
||||
@es_extension{NV,read_depth_stencil} | done |
||||
@es_extension{NV,texture_border_clamp} | done |
||||
@es_extension{OES,depth32} | done |
||||
@es_extension{OES,mapbuffer} | done |
||||
@es_extension{OES,stencil1} | done |
||||
@es_extension{OES,stencil4} | done |
||||
@es_extension{OES,texture_3D} | missing limit query |
||||
|
||||
@section opengl-unsupported Unsupported OpenGL features |
||||
|
||||
Some functionality, which is either soon-to-be deprecated or isn't proven to |
||||
add any performance gains, is not supported in %Magnum. See also |
||||
@ref opengl-deprecated. |
||||
|
||||
@subsection opengl-unsupported-features Unsupported features |
||||
|
||||
- State queries (various `glIs*()`, `glGet*()` functions) are not supported. |
||||
%Magnum API is designed to prevent the need for majority of them, many of |
||||
them are tracked internally to avoid redundant state changes and in many |
||||
cases it is easier to set the state to some value rather than query it and |
||||
then decide on the result. For detailed state introspection please use |
||||
external debugger (such as ApiTrace), which is more convenient to use than |
||||
manual queries. Queries of implementation-defined values (various limits |
||||
etc.) and queries of generated values (buffer data, texture data) are |
||||
supported. |
||||
- Line and polygon smoothing (`GL_LINE_SMOOTH`, `GL_POLYGON_SMOOTH`) and |
||||
related functions are not supported, as the driver might do it in software |
||||
with serious performance drops. Multisampling is far superior solution. |
||||
- Fixed precision data types (`GL_FIXED` in OpenGL ES) are not supported, as |
||||
they occupy the same memory as floats and they aren't faster than floats on |
||||
current hardware anymore. |
||||
- Shader compiler is assumed to be present (`GL_SHADER_COMPILER` returning |
||||
true), as all desktop GL implementations and also ES3 are required to |
||||
support it. |
||||
- Querying shader attribute locations (as opposed to setting them) is not |
||||
supported, as newer GL versions encourage setting them explicitly in shader |
||||
code. |
||||
- Direct vertex data specification (as opposed to using buffers) is not |
||||
supported, as it encourages bad practices. |
||||
|
||||
@subsection opengl-unsupported-extensions Unsupported extensions |
||||
|
||||
- @extension{INTEL,map_texture} negatively affects texture access performance. |
||||
Combination of buffer mapping and pixel buffers might be of the same or |
||||
better performance, without affecting texture access speed. |
||||
- @extension{NV,draw_texture} can be done with framebuffer blitting and |
||||
doesn't make any full-screen postprocessing easier, as shaders are excluded. |
||||
|
||||
*/ |
||||
|
||||
/** @page opengl-deprecated Deprecated OpenGL API list |
||||
|
||||
See also @ref opengl-unsupported and @ref deprecated. |
||||
|
||||
*/ |
||||
|
||||
/** @page deprecated Deprecated list |
||||
|
||||
See also @ref opengl-deprecated. |
||||
|
||||
*/ |
||||
@ -0,0 +1,93 @@
|
||||
/* |
||||
This file is part of Magnum. |
||||
|
||||
Copyright © 2010, 2011, 2012, 2013 Vladimír Vondruš <mosra@centrum.cz> |
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a |
||||
copy of this software and associated documentation files (the "Software"), |
||||
to deal in the Software without restriction, including without limitation |
||||
the rights to use, copy, modify, merge, publish, distribute, sublicense, |
||||
and/or sell copies of the Software, and to permit persons to whom the |
||||
Software is furnished to do so, subject to the following conditions: |
||||
|
||||
The above copyright notice and this permission notice shall be included |
||||
in all copies or substantial portions of the Software. |
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
||||
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
||||
DEALINGS IN THE SOFTWARE. |
||||
*/ |
||||
|
||||
namespace Magnum { |
||||
/** @page troubleshooting Troubleshooting |
||||
|
||||
@brief Various tricks to overcome to common building and rendering issues. |
||||
|
||||
@section troubleshooting-building Building issues |
||||
|
||||
If your project suddenly stops building after %Magnum upgrade, check these |
||||
things: |
||||
|
||||
- If the building fails on CMake step, be sure that you have up-to-date |
||||
`FindCorrade.cmake`, `FindMagnum.cmake` and other CMake modules in your |
||||
project (`FindSDL2.cmake`). They are contained in `modules/` directory of |
||||
%Magnum sources (and sources of other projects) also are installed into |
||||
`share/cmake/Magnum`. |
||||
- In some cases when the changes done to build system are too drastic, |
||||
recreating the build dir or clearing CMake cache is needed, but this is |
||||
a very rare occasion. |
||||
- The library is constantly evolving, thus some API might get deprecated over |
||||
time (and later removed). Either build the libraries with `BUILD_DEPRECATED` |
||||
or switch to non-deprecated features. See @ref building for more |
||||
information. |
||||
|
||||
@section troubleshooting-rendering Rendering issues |
||||
|
||||
If you are experiencing so-called "black screen of death", you might want to |
||||
try these things: |
||||
|
||||
- Verify that @ref Renderer::error() "no OpenGL error was emitted". |
||||
- Check that you use only extensions that are |
||||
@ref Context::isExtensionSupported() "available on your system". |
||||
- Check that you didn't exceed any implementation-defined limit (see |
||||
`magnum-info` output for list of all of them). |
||||
- Enable @ref DebugMessage "debug output" to see more detailed errors, |
||||
warnings and performance hints. |
||||
- If using framebuffer objects, @ref Framebuffer::checkStatus() "check that they are complete". |
||||
- Change @ref Renderer::setClearColor() "framebuffer clear color" to |
||||
something else than black to verify that at least something is drawn. |
||||
- If nothing is drawn, use @ref PrimitiveQuery to check that at least some |
||||
primitives were generated. Use @ref SampleQuery to check whether fragments |
||||
were drawn. |
||||
- Verify that the mesh is properly set up -- nonzero vertex/index count, |
||||
matching type in buffer and @ref Mesh::addVertexBuffer() "vertex specification", |
||||
properly set up @ref Mesh::setIndexBuffer() "index buffer" and index count |
||||
for indexed mesh. If you specified index range, be sure that all indices |
||||
fall into it, otherwise you would get undefined behavior. |
||||
- Try disabling @ref Renderer::Feature::DepthTest "depth test", |
||||
@ref Renderer::Feature::FaceCulling "face culling" and other renderer |
||||
features that might affect the fragments. |
||||
- Verify that your projection and transformation matrix is properly set up -- |
||||
try drawing points instead of triangles, to see if they are at least at |
||||
proper places. |
||||
- @ref AbstractShaderProgram::validate() "Validate the shader", check that |
||||
all used uniforms and attributes have proper locations. Try reducing it |
||||
until it is able to draw something, possibly also with some simpler mesh. |
||||
|
||||
@section troubleshooting-debugging Debugging rendering |
||||
|
||||
- Enable @ref DebugMessage "debug output" to see additional performance hints |
||||
and implementation-dependent information. |
||||
- Use @ref TimeQuery to find hot spots in the rendering code. |
||||
- @ref DebugMessage::insert() "Mark relevant parts of code" to find them |
||||
easier in the debugger. |
||||
- Use ApiTrace to trace the program call by call, verify buffer and texture |
||||
contents, vertex binding and count of generated primitives, rendered |
||||
fragments and time spent in various calls. |
||||
|
||||
*/ |
||||
} |
||||
@ -1,62 +0,0 @@
|
||||
/* |
||||
This file is part of Magnum. |
||||
|
||||
Copyright © 2010, 2011, 2012, 2013 Vladimír Vondruš <mosra@centrum.cz> |
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a |
||||
copy of this software and associated documentation files (the "Software"), |
||||
to deal in the Software without restriction, including without limitation |
||||
the rights to use, copy, modify, merge, publish, distribute, sublicense, |
||||
and/or sell copies of the Software, and to permit persons to whom the |
||||
Software is furnished to do so, subject to the following conditions: |
||||
|
||||
The above copyright notice and this permission notice shall be included |
||||
in all copies or substantial portions of the Software. |
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
||||
THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
||||
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
||||
DEALINGS IN THE SOFTWARE. |
||||
*/ |
||||
|
||||
/** @page unsupported Unsupported OpenGL features |
||||
|
||||
Some functionality, which is either soon-to-be deprecated or isn't proven to |
||||
add any performance gains, is not supported in %Magnum. See also @ref deprecated-gl. |
||||
|
||||
@section unsupported-features Unsupported features |
||||
|
||||
- Line and polygon smoothing (`GL_LINE_SMOOTH`, `GL_POLYGON_SMOOTH`) and |
||||
related functions are not supported, as the driver might do it in software |
||||
with serious performance drops. Multisampling is far superior solution. |
||||
- Fixed precision data types (`GL_FIXED` in OpenGL ES) are not supported, as |
||||
they occupy the same memory as floats and they aren't faster than floats on |
||||
current hardware anymore. |
||||
- Shader compiler is assumed to be present (`GL_SHADER_COMPILER` returning |
||||
true), as all desktop GL implementations and also ES3 are required to |
||||
support it. |
||||
|
||||
@section unsupported-extensions Unsupported extensions |
||||
|
||||
- @extension{INTEL,map_texture} negatively affects texture access performance. |
||||
Combination of buffer mapping and pixel buffers might be of the same or |
||||
better performance, without affecting texture access speed. |
||||
- @extension{NV,draw_texture} can be done with framebuffer blitting and |
||||
doesn't make any full-screen postprocessing easier, as shaders are excluded. |
||||
|
||||
*/ |
||||
|
||||
/** @page deprecated-gl Deprecated OpenGL API list |
||||
|
||||
See also @ref unsupported and @ref deprecated. |
||||
|
||||
*/ |
||||
|
||||
/** @page deprecated Deprecated list |
||||
|
||||
See also @ref deprecated-gl. |
||||
|
||||
*/ |
||||
@ -0,0 +1,120 @@
|
||||
<?xml version='1.0' encoding='UTF-8'?> |
||||
<matrix-project> |
||||
<actions/> |
||||
<description></description> |
||||
<logRotator class="hudson.tasks.LogRotator"> |
||||
<daysToKeep>-1</daysToKeep> |
||||
<numToKeep>10</numToKeep> |
||||
<artifactDaysToKeep>-1</artifactDaysToKeep> |
||||
<artifactNumToKeep>-1</artifactNumToKeep> |
||||
</logRotator> |
||||
<keepDependencies>false</keepDependencies> |
||||
<properties/> |
||||
<scm class="hudson.plugins.git.GitSCM" plugin="git@2.0"> |
||||
<configVersion>2</configVersion> |
||||
<userRemoteConfigs> |
||||
<hudson.plugins.git.UserRemoteConfig> |
||||
<url>git://github.com/mosra/magnum.git</url> |
||||
</hudson.plugins.git.UserRemoteConfig> |
||||
</userRemoteConfigs> |
||||
<branches> |
||||
<hudson.plugins.git.BranchSpec> |
||||
<name>*/master</name> |
||||
</hudson.plugins.git.BranchSpec> |
||||
</branches> |
||||
<doGenerateSubmoduleConfigurations>false</doGenerateSubmoduleConfigurations> |
||||
<submoduleCfg class="list"/> |
||||
<extensions> |
||||
<hudson.plugins.git.extensions.impl.CloneOption> |
||||
<shallow>true</shallow> |
||||
<reference></reference> |
||||
</hudson.plugins.git.extensions.impl.CloneOption> |
||||
</extensions> |
||||
</scm> |
||||
<canRoam>true</canRoam> |
||||
<disabled>false</disabled> |
||||
<blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding> |
||||
<blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding> |
||||
<triggers/> |
||||
<concurrentBuild>false</concurrentBuild> |
||||
<customWorkspace>Magnum</customWorkspace> |
||||
<axes> |
||||
<hudson.matrix.TextAxis> |
||||
<name>toolchain</name> |
||||
<values> |
||||
<string>newlib-x86-32</string> |
||||
<string>newlib-x86-64</string> |
||||
</values> |
||||
</hudson.matrix.TextAxis> |
||||
<hudson.matrix.TextAxis> |
||||
<name>compatibility</name> |
||||
<values> |
||||
<string></string> |
||||
<string>deprecated</string> |
||||
</values> |
||||
</hudson.matrix.TextAxis> |
||||
</axes> |
||||
<builders> |
||||
<hudson.tasks.Shell> |
||||
<command> |
||||
<![CDATA[ |
||||
git submodule init |
||||
git submodule update |
||||
|
||||
if [ "${compatibility}" = "deprecated" ] ; then |
||||
deprecated_build_flag=ON |
||||
else |
||||
deprecated_build_flag=OFF |
||||
fi |
||||
|
||||
mkdir -p build-nacl-${toolchain}-${compatibility} |
||||
cd build-mingw32-${toolchain}-${compatibility} |
||||
|
||||
cmake .. \ |
||||
-DCMAKE_BUILD_TYPE=Release \ |
||||
-DCMAKE_MODULE_PATH="${WORKSPACE}/toolchains/modules" \ |
||||
-DCMAKE_TOOLCHAIN_FILE=../toolchains/generic/NaCl-${toolchain}.cmake \ |
||||
-DCMAKE_FIND_ROOT_PATH=${JENKINS_HOME}/filesystem/nacl-${toolchain}-${compatibility} \ |
||||
-DCMAKE_INSTALL_PREFIX=${JENKINS_HOME}/filesystem/nacl-${toolchain}-${compatibility} \ |
||||
-DBUILD_DEPRECATED=${deprecated_build_flag} \ |
||||
`#-DWITH_AUDIO=ON` \ |
||||
-DWITH_NACLAPPLICATION=ON \ |
||||
-DWITH_MAGNUMFONT=ON \ |
||||
-DWITH_MAGNUMFONTCONVERTER=ON \ |
||||
-DWITH_TGAIMAGECONVERTER=ON \ |
||||
-DWITH_TGAIMPORTER=ON \ |
||||
`#-DWITH_WAVAUDIOIMPORTER=ON` \ |
||||
-DWITH_MAGNUMINFO=ON \ |
||||
-G Ninja |
||||
|
||||
ninja |
||||
ninja install |
||||
]]> |
||||
</command> |
||||
</hudson.tasks.Shell> |
||||
</builders> |
||||
<publishers> |
||||
<hudson.plugins.textfinder.TextFinderPublisher plugin="text-finder@1.9"> |
||||
<regexp>Errors while running CTest</regexp> |
||||
<succeedIfFound>false</succeedIfFound> |
||||
<unstableIfFound>true</unstableIfFound> |
||||
<alsoCheckConsoleOutput>true</alsoCheckConsoleOutput> |
||||
</hudson.plugins.textfinder.TextFinderPublisher> |
||||
</publishers> |
||||
<buildWrappers/> |
||||
<executionStrategy class="hudson.matrix.DefaultMatrixExecutionStrategyImpl"> |
||||
<runSequentially>true</runSequentially> |
||||
<touchStoneCombinationFilter> |
||||
<![CDATA[ |
||||
toolchain == "newlib-x86-64" && compatibility == "deprecated" |
||||
]]> |
||||
</touchStoneCombinationFilter> |
||||
<touchStoneResultCondition> |
||||
<name>UNSTABLE</name> |
||||
<ordinal>1</ordinal> |
||||
<color>YELLOW</color> |
||||
<completeBuild>true</completeBuild> |
||||
</touchStoneResultCondition> |
||||
</executionStrategy> |
||||
<childCustomWorkspace>.</childCustomWorkspace> |
||||
</matrix-project> |
||||
@ -0,0 +1,244 @@
|
||||
# |
||||
# This file is part of Magnum. |
||||
# |
||||
# Copyright © 2010, 2011, 2012, 2013 Vladimír Vondruš <mosra@centrum.cz> |
||||
# |
||||
# Permission is hereby granted, free of charge, to any person obtaining a |
||||
# copy of this software and associated documentation files (the "Software"), |
||||
# to deal in the Software without restriction, including without limitation |
||||
# the rights to use, copy, modify, merge, publish, distribute, sublicense, |
||||
# and/or sell copies of the Software, and to permit persons to whom the |
||||
# Software is furnished to do so, subject to the following conditions: |
||||
# |
||||
# The above copyright notice and this permission notice shall be included |
||||
# in all copies or substantial portions of the Software. |
||||
# |
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL |
||||
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING |
||||
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
||||
# DEALINGS IN THE SOFTWARE. |
||||
# |
||||
|
||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/configure.h.cmake |
||||
${CMAKE_CURRENT_BINARY_DIR}/configure.h) |
||||
|
||||
# Files shared between main library and unit test library |
||||
set(Magnum_SRCS |
||||
AbstractFramebuffer.cpp |
||||
AbstractImage.cpp |
||||
AbstractObject.cpp |
||||
AbstractTexture.cpp |
||||
AbstractShaderProgram.cpp |
||||
Buffer.cpp |
||||
ColorFormat.cpp |
||||
Context.cpp |
||||
DebugMessage.cpp |
||||
DefaultFramebuffer.cpp |
||||
Framebuffer.cpp |
||||
Image.cpp |
||||
Mesh.cpp |
||||
MeshView.cpp |
||||
OpenGL.cpp |
||||
Query.cpp |
||||
Renderbuffer.cpp |
||||
Renderer.cpp |
||||
Resource.cpp |
||||
Sampler.cpp |
||||
Shader.cpp |
||||
Timeline.cpp |
||||
Version.cpp |
||||
|
||||
Implementation/BufferState.cpp |
||||
Implementation/DebugState.cpp |
||||
Implementation/State.cpp |
||||
Implementation/TextureState.cpp |
||||
|
||||
Trade/AbstractImageConverter.cpp |
||||
Trade/AbstractImporter.cpp |
||||
Trade/AbstractMaterialData.cpp |
||||
Trade/MeshData2D.cpp |
||||
Trade/MeshData3D.cpp |
||||
Trade/MeshObjectData2D.cpp |
||||
Trade/MeshObjectData3D.cpp |
||||
Trade/ObjectData2D.cpp |
||||
Trade/ObjectData3D.cpp |
||||
Trade/PhongMaterialData.cpp |
||||
Trade/SceneData.cpp |
||||
Trade/TextureData.cpp) |
||||
|
||||
# Desktop-only code |
||||
if(NOT TARGET_GLES) |
||||
set(Magnum_SRCS ${Magnum_SRCS} |
||||
BufferTexture.cpp) |
||||
endif() |
||||
|
||||
# Not-ES2 code |
||||
if(NOT TARGET_GLES2) |
||||
set(Magnum_SRCS ${Magnum_SRCS} |
||||
BufferImage.cpp) |
||||
endif() |
||||
|
||||
set(Magnum_HEADERS |
||||
AbstractFramebuffer.h |
||||
AbstractImage.h |
||||
AbstractObject.h |
||||
AbstractResourceLoader.h |
||||
AbstractShaderProgram.h |
||||
AbstractTexture.h |
||||
Array.h |
||||
Buffer.h |
||||
Color.h |
||||
ColorFormat.h |
||||
Context.h |
||||
CubeMapTexture.h |
||||
DebugMessage.h |
||||
DefaultFramebuffer.h |
||||
DimensionTraits.h |
||||
Extensions.h |
||||
Framebuffer.h |
||||
Image.h |
||||
ImageReference.h |
||||
Magnum.h |
||||
Mesh.h |
||||
MeshView.h |
||||
OpenGL.h |
||||
Query.h |
||||
Renderbuffer.h |
||||
RenderbufferFormat.h |
||||
Renderer.h |
||||
Resource.h |
||||
ResourceManager.h |
||||
Sampler.h |
||||
Shader.h |
||||
Texture.h |
||||
TextureFormat.h |
||||
Timeline.h |
||||
Types.h |
||||
Version.h |
||||
|
||||
visibility.h) |
||||
|
||||
# Deprecated headers |
||||
if(BUILD_DEPRECATED) |
||||
set(Magnum_HEADERS ${Magnum_HEADERS} |
||||
DebugMarker.h |
||||
ImageFormat.h |
||||
Swizzle.h) |
||||
endif() |
||||
|
||||
# Desktop-only headers and libraries |
||||
if(NOT TARGET_GLES) |
||||
set(Magnum_HEADERS ${Magnum_HEADERS} |
||||
BufferTexture.h |
||||
CubeMapTextureArray.h) |
||||
set(Magnum_SRCS ${Magnum_SRCS} $<TARGET_OBJECTS:MagnumGLLoadGenObjects>) |
||||
endif() |
||||
|
||||
# Not-ES2 headers |
||||
if(NOT TARGET_GLES2) |
||||
set(Magnum_HEADERS ${Magnum_HEADERS} |
||||
BufferImage.h) |
||||
endif() |
||||
|
||||
# Files shared between main library and math unit test library |
||||
set(MagnumMath_SRCS |
||||
Math/Functions.cpp |
||||
Math/instantiation.cpp) |
||||
|
||||
# Main library |
||||
add_library(MagnumMathObjects OBJECT ${MagnumMath_SRCS}) |
||||
add_library(Magnum ${SHARED_OR_STATIC} |
||||
${Magnum_SRCS} |
||||
$<TARGET_OBJECTS:MagnumMathObjects>) |
||||
|
||||
# TODO: fix when CMake sets target_EXPORTS for OBJECT targets as well |
||||
if(NOT BUILD_STATIC OR BUILD_STATIC_PIC) |
||||
# Set shared library flags for the objects, as they will be part of shared lib |
||||
# TODO: CMake 2.8.9 has this as POSITION_INDEPENDENT_CODE property |
||||
set_target_properties(MagnumMathObjects PROPERTIES COMPILE_FLAGS "-DMagnumMathObjects_EXPORTS ${CMAKE_SHARED_LIBRARY_CXX_FLAGS}") |
||||
set_target_properties(Magnum PROPERTIES COMPILE_FLAGS "-DGLLoadGen_EXPORTS ${CMAKE_SHARED_LIBRARY_CXX_FLAGS}") |
||||
else() |
||||
set_target_properties(MagnumMathObjects PROPERTIES COMPILE_FLAGS "-DMagnumMathObjects_EXPORTS") |
||||
set_target_properties(Magnum PROPERTIES COMPILE_FLAGS "-DGLLoadGen_EXPORTS") |
||||
endif() |
||||
|
||||
set(Magnum_LIBS |
||||
${CORRADE_UTILITY_LIBRARIES} |
||||
${CORRADE_PLUGINMANAGER_LIBRARIES}) |
||||
if(NOT TARGET_GLES OR TARGET_DESKTOP_GLES) |
||||
set(Magnum_LIBS ${Magnum_LIBS} ${OPENGL_gl_LIBRARY}) |
||||
elseif(TARGET_GLES2) |
||||
set(Magnum_LIBS ${Magnum_LIBS} ${OPENGLES2_LIBRARY}) |
||||
else() |
||||
set(Magnum_LIBS ${Magnum_LIBS} ${OPENGLES3_LIBRARY}) |
||||
endif() |
||||
target_link_libraries(Magnum ${Magnum_LIBS}) |
||||
|
||||
install(TARGETS Magnum |
||||
RUNTIME DESTINATION ${MAGNUM_BINARY_INSTALL_DIR} |
||||
LIBRARY DESTINATION ${MAGNUM_LIBRARY_INSTALL_DIR} |
||||
ARCHIVE DESTINATION ${MAGNUM_LIBRARY_INSTALL_DIR}) |
||||
install(FILES ${Magnum_HEADERS} DESTINATION ${MAGNUM_INCLUDE_INSTALL_DIR}) |
||||
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/configure.h DESTINATION ${MAGNUM_INCLUDE_INSTALL_DIR}) |
||||
|
||||
add_subdirectory(Math) |
||||
add_subdirectory(Platform) |
||||
add_subdirectory(Trade) |
||||
|
||||
if(WITH_AUDIO) |
||||
add_subdirectory(Audio) |
||||
endif() |
||||
|
||||
if(WITH_DEBUGTOOLS) |
||||
add_subdirectory(DebugTools) |
||||
endif() |
||||
|
||||
if(WITH_MESHTOOLS) |
||||
add_subdirectory(MeshTools) |
||||
endif() |
||||
|
||||
if(WITH_PRIMITIVES) |
||||
add_subdirectory(Primitives) |
||||
endif() |
||||
|
||||
if(WITH_SCENEGRAPH) |
||||
add_subdirectory(SceneGraph) |
||||
endif() |
||||
|
||||
if(WITH_SHADERS) |
||||
add_subdirectory(Shaders) |
||||
endif() |
||||
|
||||
if(WITH_SHAPES) |
||||
add_subdirectory(Shapes) |
||||
endif() |
||||
|
||||
if(WITH_TEXT) |
||||
add_subdirectory(Text) |
||||
endif() |
||||
|
||||
if(WITH_TEXTURETOOLS) |
||||
add_subdirectory(TextureTools) |
||||
endif() |
||||
|
||||
if(BUILD_TESTS) |
||||
# Libraries with graceful assert for testing |
||||
add_library(MagnumMathTestLib ${SHARED_OR_STATIC} |
||||
$<TARGET_OBJECTS:MagnumMathObjects>) |
||||
set_target_properties(MagnumMathTestLib PROPERTIES COMPILE_FLAGS -DCORRADE_GRACEFUL_ASSERT) |
||||
target_link_libraries(MagnumMathTestLib ${CORRADE_UTILITY_LIBRARY}) |
||||
|
||||
# On Windows we need to install first and then run the tests to avoid "DLL |
||||
# not found" hell, thus we need to install this too |
||||
if(WIN32 AND NOT CMAKE_CROSSCOMPILING) |
||||
install(TARGETS MagnumMathTestLib |
||||
RUNTIME DESTINATION ${MAGNUM_BINARY_INSTALL_DIR} |
||||
LIBRARY DESTINATION ${MAGNUM_LIBRARY_INSTALL_DIR} |
||||
ARCHIVE DESTINATION ${MAGNUM_LIBRARY_INSTALL_DIR}) |
||||
endif() |
||||
|
||||
add_subdirectory(Test) |
||||
endif() |
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue