Actually, this is a valid way to do pure immediate mode rendering. The problem is that the application does not wait for the paint() event to happen. You can't draw to the on screen canvas until it is on the screen.
Doug Twilleager Java 3D Team Sun Microsystems >Subject: Re: [JAVA3D] using immediate mode of drawing >To: [EMAIL PROTECTED] >MIME-version: 1.0 >Delivered-to: [EMAIL PROTECTED] > >This code is not written according to the specification. Accessing and >modifying the graphics context needs to be done on a per frame basis in the >callback functions of a derived canvas3d. > >Dave > >-----Original Message----- >From: Nitin.Jain [mailto:[EMAIL PROTECTED]] >Sent: Thursday, May 16, 2002 9:58 AM >To: [EMAIL PROTECTED] >Subject: [JAVA3D] using immediate mode of drawing > > > Hi , >we are not able to use the immediate mode of rendering of Canvas3D. We are >doing every thing according to the specification in 1.3 API documentation(I >think). Is it necessary for us to create our own implementation of canvas3d. >I'm attaching the code we have written to do the same. > >Thanks in advance >Nitin > > >> import javax.media.j3d.*; >> import java.applet.Applet; >> import java.awt.BorderLayout; >> import java.awt.event.*; >> import java.awt.GraphicsConfiguration; >> import com.sun.j3d.utils.applet.MainFrame; >> import com.sun.j3d.utils.geometry.ColorCube; >> import com.sun.j3d.utils.universe.*; >> import com.sun.j3d.loaders.objectfile.*; >> import com.sun.j3d.loaders.*; >> >> import javax.vecmath.*; >> import java.awt.*; >> >> import com.sun.j3d.loaders.vrml97.VrmlLoader; >> import com.sun.j3d.loaders.vrml97.VrmlScene; >> >> public class HelloUniverse extends Applet >> { >> >> public HelloUnivers() >> { >> >> } >> >> public void init() >> { >> createVirtualUniverse(); >> } >> >> private void createVirtualUniverse() >> { >> GraphicsConfigTemplate3D template = new >> GraphicsConfigTemplate3D(); >> GraphicsConfiguration config = >> GraphicsEnvironment.getLocalGraphicsEnvironment(). >> >> getDefaultScreenDevice().getBestConfiguration(template); >> > Canvas3D myCanvas3D = new Canvas3D(config); >> setLayout(new BorderLayout()); >> add("Center", myCanvas3D); >> >> VirtualUniverse myUniverse = new VirtualUniverse(); >> Locale myLocale = new Locale(myUniverse); >> >> myCanvas3D.stopRenderer(); >> > >> BranchGroup viewBranch = buildViewBranch(myCanvas3D); >> >> >> myLocale.addBranchGraph(viewBranch); >> >> GraphicsContext3D gc3D = myCanvas3D.getGraphicsContext3D(); >> gc3D.clear(); >> gc3D.draw(new ColorCube(0.5)); >> gc3D.flush(false); >> myCanvas3D.swap(); >> myCanvas3D.startRenderer(); >> } >> >> private BranchGroup buildViewBranch(Canvas3D c) >> { >> BranchGroup viewBranch = new BranchGroup(); >> Transform3D viewXfm = new Transform3D(); >> viewXfm.set(new Vector3f(0.0f,0.0f,5.0f)); >> TransformGroup viewXfmGroup = new TransformGroup(viewXfm); >> ViewPlatform myViewPlatform = new ViewPlatform(); >> viewXfmGroup.addChild(myViewPlatform); >> viewBranch.addChild(viewXfmGroup); >> View myView = new View(); >> PhysicalBody mybody = new PhysicalBody(); >> PhysicalEnvironment myEnvironment = new PhysicalEnvironment(); >> myView.setPhysicalBody(mybody); >> myView.setPhysicalEnvironment(myEnvironment); >> >> myView.addCanvas3D(c); >> myView.attachViewPlatform(myViewPlatform); >> return viewBranch; >> } >> >> public static void main(String[] args) >> { >> new MainFrame(new HelloUniverse(), 256, 256); >> } >> } > >=========================================================================== >To unsubscribe, send email to [EMAIL PROTECTED] and include in the body >of the message "signoff JAVA3D-INTEREST". For general help, send email to >[EMAIL PROTECTED] and include in the body of the message "help". > >=========================================================================== >To unsubscribe, send email to [EMAIL PROTECTED] and include in the body >of the message "signoff JAVA3D-INTEREST". For general help, send email to >[EMAIL PROTECTED] and include in the body of the message "help". =========================================================================== To unsubscribe, send email to [EMAIL PROTECTED] and include in the body of the message "signoff JAVA3D-INTEREST". For general help, send email to [EMAIL PROTECTED] and include in the body of the message "help".