| '''OpenGL extension NV.gpu_program4 |
| |
| This module customises the behaviour of the |
| OpenGL.raw.GL.NV.gpu_program4 to provide a more |
| Python-friendly API |
| |
| Overview (from the spec) |
| |
| This specification documents the common instruction set and basic |
| functionality provided by NVIDIA's 4th generation of assembly instruction |
| sets supporting programmable graphics pipeline stages. |
| |
| The instruction set builds upon the basic framework provided by the |
| ARB_vertex_program and ARB_fragment_program extensions to expose |
| considerably more capable hardware. In addition to new capabilities for |
| vertex and fragment programs, this extension provides a new program type |
| (geometry programs) further described in the NV_geometry_program4 |
| specification. |
| |
| NV_gpu_program4 provides a unified instruction set -- all instruction set |
| features are available for all program types, except for a small number of |
| features that make sense only for a specific program type. It provides |
| fully capable signed and unsigned integer data types, along with a set of |
| arithmetic, logical, and data type conversion instructions capable of |
| operating on integers. It also provides a uniform set of structured |
| branching constructs (if tests, loops, and subroutines) that fully support |
| run-time condition testing. |
| |
| This extension provides several new texture mapping capabilities. Shadow |
| cube maps are supported, where cube map faces can encode depth values. |
| Texture lookup instructions can include an immediate texel offset, which |
| can assist in advanced filtering. New instructions are provided to fetch |
| a single texel by address in a texture map (TXF) and query the size of a |
| specified texture level (TXQ). |
| |
| By and large, vertex and fragment programs written to ARB_vertex_program |
| and ARB_fragment_program can be ported directly by simply changing the |
| program header from "!!ARBvp1.0" or "!!ARBfp1.0" to "!!NVvp4.0" or |
| "!!NVfp4.0", and then modifying the code to take advantage of the expanded |
| feature set. There are a small number of areas where this extension is |
| not a functional superset of previous vertex program extensions, which are |
| documented in this specification. |
| |
| |
| The official definition of this extension is available here: |
| http://www.opengl.org/registry/specs/NV/gpu_program4.txt |
| ''' |
| from OpenGL import platform, constant, arrays |
| from OpenGL import extensions, wrapper |
| import ctypes |
| from OpenGL.raw.GL import _types, _glgets |
| from OpenGL.raw.GL.NV.gpu_program4 import * |
| from OpenGL.raw.GL.NV.gpu_program4 import _EXTENSION_NAME |
|
|
| def glInitGpuProgram4NV(): |
| '''Return boolean indicating whether this extension is available''' |
| from OpenGL import extensions |
| return extensions.hasGLExtension( _EXTENSION_NAME ) |
|
|
| glProgramLocalParameterI4ivNV=wrapper.wrapper(glProgramLocalParameterI4ivNV).setInputArraySize( |
| 'params', 4 |
| ) |
| |
| glProgramLocalParametersI4ivNV=wrapper.wrapper(glProgramLocalParametersI4ivNV).setInputArraySize( |
| 'params', None |
| ) |
| glProgramLocalParameterI4uivNV=wrapper.wrapper(glProgramLocalParameterI4uivNV).setInputArraySize( |
| 'params', 4 |
| ) |
| |
| glProgramLocalParametersI4uivNV=wrapper.wrapper(glProgramLocalParametersI4uivNV).setInputArraySize( |
| 'params', None |
| ) |
| glProgramEnvParameterI4ivNV=wrapper.wrapper(glProgramEnvParameterI4ivNV).setInputArraySize( |
| 'params', 4 |
| ) |
| |
| glProgramEnvParametersI4ivNV=wrapper.wrapper(glProgramEnvParametersI4ivNV).setInputArraySize( |
| 'params', None |
| ) |
| glProgramEnvParameterI4uivNV=wrapper.wrapper(glProgramEnvParameterI4uivNV).setInputArraySize( |
| 'params', 4 |
| ) |
| |
| glProgramEnvParametersI4uivNV=wrapper.wrapper(glProgramEnvParametersI4uivNV).setInputArraySize( |
| 'params', None |
| ) |
| glGetProgramLocalParameterIivNV=wrapper.wrapper(glGetProgramLocalParameterIivNV).setOutput( |
| 'params',size=(4,),orPassIn=True |
| ) |
| glGetProgramLocalParameterIuivNV=wrapper.wrapper(glGetProgramLocalParameterIuivNV).setOutput( |
| 'params',size=(4,),orPassIn=True |
| ) |
| glGetProgramEnvParameterIivNV=wrapper.wrapper(glGetProgramEnvParameterIivNV).setOutput( |
| 'params',size=(4,),orPassIn=True |
| ) |
| glGetProgramEnvParameterIuivNV=wrapper.wrapper(glGetProgramEnvParameterIuivNV).setOutput( |
| 'params',size=(4,),orPassIn=True |
| ) |
| |