Vertex Rendering/Rendering Failure: Difference between revisions

From OpenGL Wiki
Jump to navigation Jump to search
You can render with persistent-mapped buffers.
Renaming "rendering command" to "drawing command", in accordance with the specification's distinction.
Line 1: Line 1:
The {{enum|GL_INVALID_OPERATION}} error can happen when issuing any rendering command for many reasons, most of which have little to do with the actual rendering command itself. The following represent conditions you must ensure are valid when issuing a rendering command.
The {{enum|GL_INVALID_OPERATION}} error can happen when issuing any drawing command for many reasons, most of which have little to do with the actual drawing command itself. The following represent conditions you must ensure are valid when issuing a drawing command.


* A non-zero [[Vertex Array Object]] must be bound (though no arrays have to be enabled, so it can be a freshly-created vertex array object).
* A non-zero [[Vertex Array Object]] must be bound (though no arrays have to be enabled, so it can be a freshly-created vertex array object).
Line 13: Line 13:
** If a [[Tessellation Control Shader]] is active, a [[Tessellation Evaluation Shader]] must also be active.
** If a [[Tessellation Control Shader]] is active, a [[Tessellation Evaluation Shader]] must also be active.
* Textures used by the current programs' samplers and/or images must be complete.
* Textures used by the current programs' samplers and/or images must be complete.
* If a [[Geometry Shader]] is present, the primitive type fed to the GS must be compatible with the primitive input for the GS. If no TES is active, then the {{param|mode}} primitive type from the rendering command must match.
* If a [[Geometry Shader]] is present, the primitive type fed to the GS must be compatible with the primitive input for the GS. If no TES is active, then the {{param|mode}} primitive type from the drawing command must match.
* If [[Transform Feedback]] is active, the transform feedback mode must match the applicable primitive mode. That mode is determined as follows:
* If [[Transform Feedback]] is active, the transform feedback mode must match the applicable primitive mode. That mode is determined as follows:
** If a [[Geometry Shader]] is active, then the applicable primitive mode is the [[Geometry_Shader#Primitive_in.2Fout_specification|GS's output primitive type]].
** If a [[Geometry Shader]] is active, then the applicable primitive mode is the [[Geometry_Shader#Primitive_in.2Fout_specification|GS's output primitive type]].
** If no GS is active but a [[Tessellation Evaluation Shader]] is active, then the applicable primitive mode is the TES's output primitive type.
** If no GS is active but a [[Tessellation Evaluation Shader]] is active, then the applicable primitive mode is the TES's output primitive type.
** Otherwise, the applicable primitive type is the primitive mode provided to the rendering command.
** Otherwise, the applicable primitive type is the primitive mode provided to the drawing command.
* {{param|mode}} may be {{enum|GL_PATCH}} if and only if a [[Tessellation Evaluation Shader]] is active. And vice versa.
* {{param|mode}} may be {{enum|GL_PATCH}} if and only if a [[Tessellation Evaluation Shader]] is active. And vice versa.
* Buffer objects being read from or written by an OpenGL rendering call must not be [[Buffer Object#Persistent mapping|mapped in a non-persistent fasion]]. This includes, but is not limited to:
* Buffer objects being read from or written by an OpenGL rendering call must not be [[Buffer Object#Persistent mapping|mapped in a non-persistent fasion]]. This includes, but is not limited to:

Revision as of 01:50, 2 January 2015

The GL_INVALID_OPERATION error can happen when issuing any drawing command for many reasons, most of which have little to do with the actual drawing command itself. The following represent conditions you must ensure are valid when issuing a drawing command.

This list is not comprehensive. If you know of more, please add them here.