I am trying to get some custom OpenGL code to work for drawing into the 3d view.
This is as far as I got:
from maya.OpenMayaUI import *
from maya.OpenMaya import *
from maya.OpenMayaRender import *
glRenderer = OpenMayaRender.MHardwareRenderer.theRenderer()
glFT = glRenderer.glFunctionTable()
def initOGL():
glFT.glMatrixMode(MGL_PROJECTION)
glFT.glLoadIdentity()
glFT.glOrtho(viewX, viewX + viewWidth, viewY, viewY + viewHeight, -1, 2)
glFT.glMatrixMode(MGL_MODELVIEW)
glFT.glLoadIdentity()
glFT.glScissor(viewX, viewY, viewWidth, viewHeight)
# get the active viewport
activeView = M3dView.active3dView()
# define python api pointers to get data from api class
xPtrInit = MScriptUtil()
yPtrInit = MScriptUtil()
widthPtrInit = MScriptUtil()
heightPtrInit = MScriptUtil()
xPtr = xPtrInit.asUintPtr()
yPtr = yPtrInit.asUintPtr()
widthPtr = widthPtrInit.asUintPtr()
heightPtr = heightPtrInit.asUintPtr()
# retreive viewport width and height
activeView.viewport(xPtr, yPtr, widthPtr, heightPtr)
viewX = xPtrInit.getUint( xPtr )
viewY = yPtrInit.getUint( yPtr )
viewWidth = widthPtrInit.getUint( widthPtr )
viewHeight = heightPtrInit.getUint( heightPtr )
activeView.beginGL()
glFT.glPushAttrib(MGL_CURRENT_BIT)
initOGL()
glFT.glColor3f(1.0,1.0,0)
glFT.glBegin(MGL_POLYGON)
x, y = 100,100
glFT.glVertex2f(x-50, y-50)
glFT.glVertex2f(x-50, y+50)
glFT.glVertex2f(x+50, y+50)
glFT.glVertex2f(x+50, y-50)
glFT.glEnd()
glFT.glPopAttrib()
activeView.endGL()
But... no polygon appears in the 3d view...
I suppose this is because I don't swap buffers, but glXSwapBuffers is not in the provided gl function table class...
How do I swap buffers in Python ?