GlDepthFunc: Difference between revisions

From QB64 Phoenix Edition Wiki
Jump to navigation Jump to search
(Created page with "'''_glDepthFunc:''' specify the value used for depth buffer comparisons {{PageSyntax}} :: SUB _glDepthFunc (BYVAL func AS _UNSIGNED LONG) :: void '''_glDepthFunc'''(GLenum {{Parameter|func}}); ; func : Specifies the depth comparison function. Symbolic constants {{KW|_GL_NEVER}}, {{KW|_GL_LESS}}, {{KW|_GL_EQUAL}}, {{KW|_GL_LEQUAL}}, {{KW|_GL_GREATER}}, {{KW|_GL_NOTEQUAL}}, {{KW|_GL_GEQUAL}}, and {{KW|_GL_ALWAYS}} are accepted. The initial value is {{KW|_GL_LESS}}....")
 
No edit summary
 
(7 intermediate revisions by the same user not shown)
Line 1: Line 1:
'''_glDepthFunc:''' specify the value used for depth buffer comparisons
{{DISPLAYTITLE:_glDepthFunc}}
The '''_glDepthFunc''' statement specifies the value used for depth-buffer comparisons.




{{PageSyntax}}
{{PageSyntax}}
: [[_glDepthFunc]] GLenum {{Parameter|func}}


::  SUB _glDepthFunc (BYVAL func AS _UNSIGNED LONG)
::  void '''_glDepthFunc'''(GLenum {{Parameter|func}});


 
{{PageParameters}}
; func
* OpenGL is using its own set of variable types to describe its command parameters.
: Specifies the depth comparison function. Symbolic constants {{KW|_GL_NEVER}}, {{KW|_GL_LESS}}, {{KW|_GL_EQUAL}}, {{KW|_GL_LEQUAL}}, {{KW|_GL_GREATER}}, {{KW|_GL_NOTEQUAL}}, {{KW|_GL_GEQUAL}}, and {{KW|_GL_ALWAYS}} are accepted. The initial value is {{KW|_GL_LESS}}.
* 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.
'''_glDepthFunc''' specifies the function used to compare each incoming pixel depth value with the depth value present in the depth buffer. The comparison is performed only if depth testing is enabled. (See {{KW|_glEnable}} and {{KW|_glDisable}} of {{KW|_GL_DEPTH_TEST}}.)
* The full description for this command can be found at [https://learn.microsoft.com/en-us/windows/win32/opengl/gldepthfunc Microsoft Docs] and is also valid for QB64 usage.
 
{{Parameter|func}} specifies the conditions under which the pixel will be drawn. The comparison functions are as follows:
 
; {{KW|_GL_NEVER}}
: Never passes.
; {{KW|_GL_LESS}}
: Passes if the incoming depth value is less than the stored depth value.
; {{KW|_GL_EQUAL}}
: Passes if the incoming depth value is equal to the stored depth value.
; {{KW|_GL_LEQUAL}}
: Passes if the incoming depth value is less than or equal to the stored depth value.
; {{KW|_GL_GREATER}}
: Passes if the incoming depth value is greater than the stored depth value.
; {{KW|_GL_NOTEQUAL}}
: Passes if the incoming depth value is not equal to the stored depth value.
; {{KW|_GL_GEQUAL}}
: Passes if the incoming depth value is greater than or equal to the stored depth value.
; {{KW|_GL_ALWAYS}}
: Always passes.
The initial value of {{Parameter|func}} is {{KW|_GL_LESS}}. Initially, depth testing is disabled. If depth testing is disabled or if no depth buffer exists, it is as if the depth test always passes.
 
 
{{PageNotes}}
 
Even if the depth buffer exists and the depth mask is non-zero, the depth buffer is not updated if the depth test is disabled. In order to unconditionally write to the depth buffer, the depth test should be enabled and set to {{KW|_GL_ALWAYS}}.
 
 
{{PageErrors}}
 
{{KW|_GL_INVALID_ENUM}} is generated if {{Parameter|func}} is not an accepted value.
 
 
{{PageUseWith}}
 
{{KW|_glGet}} with argument {{KW|_GL_DEPTH_FUNC}}
 
{{KW|_glIsEnabled}} with argument {{KW|_GL_DEPTH_TEST}}




{{PageSeeAlso}}
{{PageSeeAlso}}
 
* [[_GL|SUB _GL]]
[[_GL|SUB _GL]]
* [[_glBegin]], [[_glDepthRange]], [[_glEnable]], [[_glEnd]]
{{KW|_glEnable|(GL_DEPTH_TEST)}}, {{KW|_glDepthRange}}, {{KW|_glPolygonOffset}}
* [https://learn.microsoft.com/en-us/windows/win32/opengl/glgetbooleanv--glgetdoublev--glgetfloatv--glgetintegerv _glGet], [[_glIsEnabled]]




{{PageCopyright}}
{{PageNavigation}}

Latest revision as of 00:48, 28 January 2023

The _glDepthFunc statement specifies the value used for depth-buffer comparisons.


Syntax

_glDepthFunc GLenum func


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