Skip to content

Latest commit

 

History

History
190 lines (167 loc) · 4.91 KB

gltools.rst

File metadata and controls

190 lines (167 loc) · 4.91 KB

psychopy.tools.gltools

psychopy.tools.gltools

psychopy.tools.gltools

Overview

createProgram createProgramObjectARB compileShader compileShaderObjectARB embedShaderSourceDefs deleteObject deleteObjectARB attachShader attachObjectARB detachShader detachObjectARB linkProgram linkProgramObjectARB validateProgram validateProgramARB useProgram useProgramObjectARB getInfoLog getUniformLocations getAttribLocations createQueryObject beginQuery endQuery getQuery getAbsTimeGPU createFBO attach isComplete deleteFBO blitFBO useFBO createRenderbuffer deleteRenderbuffer createTexImage2D createTexImage2DMultisample deleteTexture VertexArrayInfo createVAO drawVAO deleteVAO VertexBufferInfo createVBO bindVBO unbindVBO mapBuffer unmapBuffer deleteVBO setVertexAttribPointer enableVertexAttribArray disableVertexAttribArray createMaterial useMaterial createLight useLights setAmbientLight ObjMeshInfo loadObjFile loadMtlFile createUVSphere createPlane getIntegerv getFloatv getString getOpenGLInfo

Details

createProgram

createProgramObjectARB

compileShader

compileShaderObjectARB

embedShaderSourceDefs

deleteObject

deleteObjectARB

attachShader

attachObjectARB

detachShader

detachObjectARB

linkProgram

linkProgramObjectARB

validateProgram

validateProgramARB

useProgram

useProgramObjectARB

getInfoLog

getUniformLocations

getAttribLocations

createQueryObject

beginQuery

endQuery

getQuery

getAbsTimeGPU

createFBO

attach

isComplete

deleteFBO

blitFBO

useFBO

createRenderbuffer

deleteRenderbuffer

createTexImage2D

createTexImage2DMultisample

deleteTexture

createVAO

drawVAO

deleteVAO

createVBO

bindVBO

unbindVBO

mapBuffer

unmapBuffer

deleteVBO

setVertexAttribPointer

enableVertexAttribArray

disableVertexAttribArray

createMaterial

useMaterial

createLight

useLights

setAmbientLight

loadObjFile

loadMtlFile

createUVSphere

createPlane

getIntegerv

getFloatv

getString

getOpenGLInfo

Examples

Working with Framebuffer Objects (FBOs):

Creating an empty framebuffer with no attachments:

fbo = createFBO()  # invalid until attachments are added

Create a render target with multiple color texture attachments:

colorTex = createTexImage2D(1024,1024)  # empty texture
depthRb = createRenderbuffer(800,600,internalFormat=GL.GL_DEPTH24_STENCIL8)

GL.glBindFramebuffer(GL.GL_FRAMEBUFFER, fbo.id)
attach(GL.GL_COLOR_ATTACHMENT0, colorTex)
attach(GL.GL_DEPTH_ATTACHMENT, depthRb)
attach(GL.GL_STENCIL_ATTACHMENT, depthRb)
# or attach(GL.GL_DEPTH_STENCIL_ATTACHMENT, depthRb)
GL.glBindFramebuffer(GL.GL_FRAMEBUFFER, 0)

Attach FBO images using a context. This automatically returns to the previous FBO binding state when complete. This is useful if you don't know the current binding state:

with useFBO(fbo):
    attach(GL.GL_COLOR_ATTACHMENT0, colorTex)
    attach(GL.GL_DEPTH_ATTACHMENT, depthRb)
    attach(GL.GL_STENCIL_ATTACHMENT, depthRb)

How to set userData some custom function might access:

fbo.userData['flags'] = ['left_eye', 'clear_before_use']

Binding an FBO for drawing/reading:

GL.glBindFramebuffer(GL.GL_FRAMEBUFFER, fb.id)

Depth-only framebuffers are valid, sometimes need for generating shadows:

depthTex = createTexImage2D(800, 600,
                            internalFormat=GL.GL_DEPTH_COMPONENT24,
                            pixelFormat=GL.GL_DEPTH_COMPONENT)
fbo = createFBO([(GL.GL_DEPTH_ATTACHMENT, depthTex)])

Deleting a framebuffer when done with it. This invalidates the framebuffer's ID and makes it available for use:

deleteFBO(fbo)