Was it this bug (advanced one) ?
:display:gsg:glgsg(error): GL texture creation failed for : invalid operation
:display:gsg:glgsg(error): Could not load
And this one is still crashing hard (tested on windows) :
from pandac.PandaModules import *
#~ loadPrcFileData('','notify-level-display spam')
from direct.showbase.DirectObject import DirectObject
import direct.directbase.DirectStart
class World( DirectObject ):
def __init__( self ):
# base.disableMouse()
base.cam.setPos( 0, -20, 2 )
# self.accept( 'mouse1', self.destroyAndCreate )
render.setShaderAuto()
self.create()
def create( self ):
self.rootNode = render.attachNewNode( 'rootNode' )
CM = CardMaker('')
CM.setFrame(-1,1,-1,1)
card = self.rootNode.attachNewNode( CM.generate())
card.setZ(-1)
card.setScale(5)
card.setP(-90)
self.light = self.rootNode.attachNewNode( Spotlight( 'Spot' ) )
self.lightNode = self.light.node()
self.lightNode.setShadowCaster( True, 512, 512 )
self.light.setPos( -20, -20, 20 )
self.light.lookAt( 0,0,0 )
self.light.posInterval(3,Point3(-30,-20,20)).loop()
self.rootNode.setLight( self.light )
loader.loadModel( 'teapot' ).reparentTo( self.rootNode )
self.buffer = base.win.makeTextureBuffer( 'Buffer', 512, 512 , Texture())
self.camNP = base.makeCamera( self.buffer )
self.camNP.reparentTo( self.rootNode )
def destroy( self ):
self.buffer.clearRenderTextures()
#~ self.buffer.setActive(0)
#~ print self.buffer.getDisplayRegion(0).getCamera()
base.graphicsEngine.removeWindow( self.buffer )
self.camNP = self.buffer = None
taskMgr.doMethodLater(.5,self.postDestroy,'postDestroy')
def postDestroy(self,t):
self.lightNode.setShadowCaster( False )
self.rootNode.clearLight( self.light )
self.light = None
self.rootNode.setState(RenderState.makeEmpty())
self.rootNode.setShaderOff(10)
self.rootNode.removeNode()
print base.graphicsEngine.getNumWindows()
base.bufferViewer.refreshReadout()
def destroyAndCreate( self ):
self.destroy()
self.create()
w = World()
import os
base.accept('escape',os._exit,[0])
base.accept('space',w.destroy)
base.accept('enter',w.create)
base.bufferViewer.enable(1)
run()
Press SPACE, then ENTER.
And thanks for the hard work !