GlStencilMask: Difference between revisions

From QB64 Phoenix Edition Wiki
Jump to navigation Jump to search
m (Protected "GlStencilMask" ([Edit=Allow only autoconfirmed users] (indefinite) [Move=Allow only autoconfirmed users] (indefinite)))
No edit summary
 
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
'''_glStencilMask:''' control the front and back writing of individual bits in the stencil planes
{{DISPLAYTITLE:_glStencilMask}}
The '''_glStencilMask''' statement controls the writing of individual bits in the stencil planes.




{{PageSyntax}}
{{PageSyntax}}
: [[_glStencilMask]] GLuint {{Parameter|mask}}


  SUB _glStencilMask (BYVAL mask AS _UNSIGNED LONG)
  void '''_glStencilMask'''(GLuint {{Parameter|mask}});


 
{{PageParameters}}
; mask
* OpenGL is using its own set of variable types to describe its command parameters.
: Specifies a bit mask to enable and disable writing of individual bits in the stencil planes. Initially, the mask is all 1's.
* Use the following table to find the respective QB64 [[Variable Types]].
{{OpenGLTypesPlugin}}




{{PageDescription}}
{{PageDescription}}
 
* OpenGL's documentation is available in several places, so we won't reproduce it here for another time.
'''_glStencilMask''' controls the writing of individual bits in the stencil planes. The least significant ''n'' bits of {{Parameter|mask}}, where ''n'' is the number of bits in the stencil buffer, specify a mask. Where a 1 appears in the mask, it's possible to write to the corresponding bit in the stencil buffer. Where a 0 appears, the corresponding bit is write-protected. Initially, all bits are enabled for writing.
* The full description for this command can be found at [https://learn.microsoft.com/en-us/windows/win32/opengl/glstencilmask Microsoft Docs] and is also valid for QB64 usage.
 
There can be two separate {{Parameter|mask}} writemasks; one affects back-facing polygons, and the other affects front-facing polygons as well as other non-polygon primitives. {{KW|_glStencilMask}} sets both front and back stencil writemasks to the same values. Use {{KW|_glStencilMaskSeparate}} to set front and back stencil writemasks to different values.
 
 
{{PageNotes}}
 
{{KW|_glStencilMask}} is the same as calling {{KW|_glStencilMaskSeparate}} with {{Parameter|face}} set to {{KW|_GL_FRONT_AND_BACK}}.
 
 
{{PageUseWith}}
 
{{KW|_glGet}} with argument {{KW|_GL_STENCIL_WRITEMASK}}, {{KW|_GL_STENCIL_BACK_WRITEMASK}}, or {{KW|_GL_STENCIL_BITS}}




{{PageSeeAlso}}
{{PageSeeAlso}}
 
* [[_GL|SUB _GL]]
[[_GL|SUB _GL]]
* [[_glBegin]], [[_glColorMask]], [[_glDepthMask]], [[_glEnd]]
{{KW|_glClear}}, {{KW|_glClearBuffer}}, {{KW|_glColorMask}}, {{KW|_glDepthMask}}, {{KW|_glStencilFunc}}, {{KW|_glStencilFuncSeparate}}, {{KW|_glStencilMaskSeparate}}, {{KW|_glStencilOp}}, {{KW|_glStencilOpSeparate}}
* [[_glIndexMask]], [[_glStencilFunc]], [[_glStencilOp]]
 
 
{{PageCopyright}}




{{PageNavigation}}
{{PageNavigation}}

Latest revision as of 01:37, 28 January 2023

The _glStencilMask statement controls the writing of individual bits in the stencil planes.


Syntax

_glStencilMask GLuint mask


Parameters

  • OpenGL is using its own set of variable types to describe its command parameters.
  • Use the following table to find the respective QB64 Variable Types.
   Table 2: Relations between the OpenGL variable types vs. C/C++ and QB64.
 ┌──────────────┬────────────────┬──────────────────────────────────────────┐
 │    OpenGLC/C++QB64                                 │
 ├──────────────┼────────────────┼──────────────────────────────────────────┤
 │ GLenum       │ unsigned int   │ _UNSIGNED LONG                           │
 ├──────────────┼────────────────┼──────────────────────────────────────────┤
 │ GLboolean    │ unsigned char  │ _UNSIGNED _BYTE                          │
 ├──────────────┼────────────────┼──────────────────────────────────────────┤
 │ GLbitfield   │ unsigned int   │ _UNSIGNED LONG                           │
 ├──────────────┼────────────────┼──────────────────────────────────────────┤
 │ GLbyte       │ signed char    │ _BYTE                                    │
 ├──────────────┼────────────────┼──────────────────────────────────────────┤
 │ GLshort      │ short          │ INTEGER                                  │
 ├──────────────┼────────────────┼──────────────────────────────────────────┤
 │ GLint        │ int            │ LONG                                     │
 ├──────────────┼────────────────┼──────────────────────────────────────────┤
 │ GLsizei      │ int            │ LONG                                     │
 ├──────────────┼────────────────┼──────────────────────────────────────────┤
 │ GLubyte      │ unsigned char  │ _UNSIGNED _BYTE                          │
 ├──────────────┼────────────────┼──────────────────────────────────────────┤
 │ GLushort     │ unsigned short │ _UNSIGNED INTEGER                        │
 ├──────────────┼────────────────┼──────────────────────────────────────────┤
 │ GLuint       │ unsigned int   │ _UNSIGNED LONG                           │
 ├──────────────┼────────────────┼──────────────────────────────────────────┤
 │ GLfloat      │ float          │ SINGLE                                   │
 ├──────────────┼────────────────┼──────────────────────────────────────────┤
 │ GLclampf     │ float          │ SINGLE                                   │
 ├──────────────┼────────────────┼──────────────────────────────────────────┤
 │ GLdouble     │ double         │ DOUBLE                                   │
 ├──────────────┼────────────────┼──────────────────────────────────────────┤
 │ GLclampd     │ double         │ DOUBLE                                   │
 ├──────────────┼────────────────┼──────────────────────────────────────────┤
 │ GLvoid   (1) │ void           │ _OFFSET(any fixed lenght string or _BYTE │
 │              │                │         array element)                   │
 └──────────────┴────────────────┴──────────────────────────────────────────┘
 Note: If a parameter has an asterisk (*) in front, then it's a pointer to
       the designated OpenGL variable type, rather than a value of that type.
       Those must be passed using the _OFFSET(...) notation.

 E.g.  GLuint *anyParam is actually the offset of a _UNSIGNED LONG (~&)
       variable or array, which must be passed as _OFFSET(anyVar~&) or
       _OFFSET(anyArr~&()) respectively.

  (1)  This type is regularly only used for pointers (with asterisk (*)) to
       any byte sized memory data, hence _BYTE or fixed length strings.


Description

  • OpenGL's documentation is available in several places, so we won't reproduce it here for another time.
  • The full description for this command can be found at Microsoft Docs and is also valid for QB64 usage.


See also



Navigation:
Main Page with Articles and Tutorials
Keyword Reference - Alphabetical
Keyword Reference - By usage
Report a broken link