diff options
Diffstat (limited to 'src/demos/cg/runtime_ogl/cgGL_vertex_example.java')
-rw-r--r-- | src/demos/cg/runtime_ogl/cgGL_vertex_example.java | 289 |
1 files changed, 0 insertions, 289 deletions
diff --git a/src/demos/cg/runtime_ogl/cgGL_vertex_example.java b/src/demos/cg/runtime_ogl/cgGL_vertex_example.java deleted file mode 100644 index f85e26c..0000000 --- a/src/demos/cg/runtime_ogl/cgGL_vertex_example.java +++ /dev/null @@ -1,289 +0,0 @@ -/* - * Portions Copyright (C) 2003 Sun Microsystems, Inc. - * All rights reserved. - */ - -/* - * - * COPYRIGHT NVIDIA CORPORATION 2003. ALL RIGHTS RESERVED. - * BY ACCESSING OR USING THIS SOFTWARE, YOU AGREE TO: - * - * 1) ACKNOWLEDGE NVIDIA'S EXCLUSIVE OWNERSHIP OF ALL RIGHTS - * IN AND TO THE SOFTWARE; - * - * 2) NOT MAKE OR DISTRIBUTE COPIES OF THE SOFTWARE WITHOUT - * INCLUDING THIS NOTICE AND AGREEMENT; - * - * 3) ACKNOWLEDGE THAT TO THE MAXIMUM EXTENT PERMITTED BY - * APPLICABLE LAW, THIS SOFTWARE IS PROVIDED *AS IS* AND - * THAT NVIDIA AND ITS SUPPLIERS DISCLAIM ALL WARRANTIES, - * EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED - * TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS - * FOR A PARTICULAR PURPOSE. - * - * IN NO EVENT SHALL NVIDIA OR ITS SUPPLIERS BE LIABLE FOR ANY - * SPECIAL, INCIDENTAL, INDIRECT, OR CONSEQUENTIAL DAMAGES - * WHATSOEVER (INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS - * OF BUSINESS PROFITS, BUSINESS INTERRUPTION, LOSS OF BUSINESS - * INFORMATION, OR ANY OTHER PECUNIARY LOSS), INCLUDING ATTORNEYS' - * FEES, RELATING TO THE USE OF OR INABILITY TO USE THIS SOFTWARE, - * EVEN IF NVIDIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - * - */ - -package demos.cg.runtime_ogl; - -import com.sun.opengl.cg.*; -import javax.media.opengl.*; -import javax.media.opengl.glu.*; - -import java.awt.*; -import java.awt.event.*; -import java.io.*; - -/** - * cgGL_vertex_example: simple demo of Nvidia CgGL API. Based upon C version - * distributed with the NVidia Cg Toolkit. Ported to the Java language by - * Christopher Kline 5/29/2003. - */ -public class cgGL_vertex_example implements GLEventListener -{ - - /******************************************************************************/ - /*** Static Data ***/ - /******************************************************************************/ - - private final int TextureRes = 512; - - private GLU glu = new GLU(); - private static CGcontext Context = null; - private static CGprogram Program = null; - private static CGparameter KdParam = null; - private static CGparameter ModelViewProjParam = null; - private static CGparameter TestColorParam = null; - private static /*CGprofile*/ int profile; - - static - { - String os = System.getProperty("os.name").toLowerCase(); - profile = os.startsWith("mac os") ? CgGL.CG_PROFILE_ARBVP1 : CgGL.CG_PROFILE_VP20; - } - - private float LightDiffuse[] = {1.0f, 0.0f, 0.0f, 1.0f}; - private float LightPosition[] = {1.0f, 1.0f, 1.0f, 0.0f}; - - private float CubeNormals[/*6*/][/*3*/] = - { - {-1.0f, 0.0f, 0.0f}, {0.0f, 1.0f, 0.0f}, - {1.0f, 0.0f, 0.0f}, {0.0f, -1.0f, 0.0f}, - {0.0f, 0.0f, 1.0f}, {0.0f, 0.0f, -1.0f} - }; - - private int CubeFaces[/*6*/][/*4*/] = - { - {0, 1, 2, 3}, {3, 2, 6, 7}, {7, 6, 5, 4}, - {4, 5, 1, 0}, {5, 6, 2, 1}, {7, 4, 0, 3} - }; - - private float CubeVertices[][] = new float[8][3]; - -/******************************************************************************/ - - private int MATRIX_INDEX(int i, int j) { return (j + i * 4); } - - private static void CheckCgError() - { - /*CGerror*/ int err = CgGL.cgGetError(); - - if (err != CgGL.CG_NO_ERROR) - { - System.out.println("CG error: " + CgGL.cgGetErrorString(err)); - System.exit(1); - } - } - - - private void DrawCube(GL gl) - { - int i; - - CgGL.cgGLBindProgram(Program); - CheckCgError(); - - /* - * Set various uniform parameters including the ModelViewProjection - * matrix for transforming the incoming position into HPOS. - */ - if(KdParam != null) - CgGL.cgGLSetParameter4f(KdParam, 1.0f, 1.0f, 0.0f, 1.0f); - - /* Set the concatenate modelview and projection matrices */ - if(ModelViewProjParam != null) - CgGL.cgGLSetStateMatrixParameter(ModelViewProjParam, - CgGL.CG_GL_MODELVIEW_PROJECTION_MATRIX, - CgGL.CG_GL_MATRIX_IDENTITY); - - CgGL.cgGLEnableProfile(profile); - - - /* - * Create cube with per-vertex varying attributes - */ - for(i = 0; i < 6; i++) - { - gl.glBegin(GL.GL_QUADS); - - gl.glNormal3f(CubeNormals[i][0], CubeNormals[i][1], CubeNormals[i][0]); - CgGL.cgGLSetParameter3f(TestColorParam, 1.0f, 0.0f, 0.0f); - float[] verts = CubeVertices[CubeFaces[i][0]]; - gl.glVertex3f(verts[0], verts[1], verts[2]); - - CgGL.cgGLSetParameter3f(TestColorParam, 0.0f, 1.0f, 0.0f); - verts = CubeVertices[CubeFaces[i][1]]; - gl.glVertex3f(verts[0], verts[1], verts[2]); - - CgGL.cgGLSetParameter3f(TestColorParam, 0.0f, 0.0f, 1.0f); - verts = CubeVertices[CubeFaces[i][2]]; - gl.glVertex3f(verts[0], verts[1], verts[2]); - - CgGL.cgGLSetParameter3f(TestColorParam, 1.0f, 1.0f, 1.0f); - verts = CubeVertices[CubeFaces[i][3]]; - gl.glVertex3f(verts[0], verts[1], verts[2]); - - gl.glEnd(); - } - - CgGL.cgGLDisableProfile(profile); - } - - public void display(GLAutoDrawable drawable) - { - GL gl = drawable.getGL(); - gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); - DrawCube(gl); - //glutSwapBuffers(); - } - - void InitializeCube(float v[/*8*/][/*3*/]) - { - /* Setup cube vertex data. */ - v[0][0] = v[1][0] = v[2][0] = v[3][0] = -1; - v[4][0] = v[5][0] = v[6][0] = v[7][0] = 1; - v[0][1] = v[1][1] = v[4][1] = v[5][1] = -1; - v[2][1] = v[3][1] = v[6][1] = v[7][1] = 1; - v[0][2] = v[3][2] = v[4][2] = v[7][2] = 1; - v[1][2] = v[2][2] = v[5][2] = v[6][2] = -1; - } - - public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) - { - // nothing - } - - public void init(GLAutoDrawable drawable) - { - // Note: we initialize Cg in this init() method instead of main() - // because Cg (apparently) requires an active OpenGL context in order to - // initialize correctly (otherwise the CheckCgError() call after - // cgGLLoadProgram() will fail). - - /* Test cgContext creation */ - Context = CgGL.cgCreateContext(); - CheckCgError(); - - /* Test adding source text to context */ - try { - Program = CgGL.cgCreateProgramFromStream( - Context, CgGL.CG_SOURCE, - getClass().getClassLoader().getResourceAsStream("demos/cg/runtime_ogl/cgGL_vertex_example.cg"), - profile, null, null); - } catch (IOException e) { - throw new RuntimeException("Error loading Cg vertex program", e); - } - CheckCgError(); - - System.err.println( - "LAST LISTING----" + CgGL.cgGetLastListing(Context) + "----\n"); - - System.err.println( - "---- PROGRAM BEGIN ----\n"+ - CgGL.cgGetProgramString(Program, CgGL.CG_COMPILED_PROGRAM)+ - "---- PROGRAM END ----\n"); - - if(Program != null) - { - CgGL.cgGLLoadProgram(Program); - CheckCgError(); - - KdParam = CgGL.cgGetNamedParameter(Program, "Kd"); - CheckCgError(); - - ModelViewProjParam = CgGL.cgGetNamedParameter(Program, "ModelViewProj"); - CheckCgError(); - - TestColorParam = CgGL.cgGetNamedParameter(Program, "IN.TestColor"); - CheckCgError(); - } - GL gl = drawable.getGL(); - - InitializeCube(CubeVertices); - - /* Enable a single OpenGL light. */ - gl.glLightfv(GL.GL_LIGHT0, GL.GL_DIFFUSE, LightDiffuse, 0); - gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, LightPosition, 0); - gl.glEnable(GL.GL_LIGHT0); - if (false) { // #if 0 - gl.glEnable(GL.GL_LIGHTING); - } else { // #else - gl.glDisable(GL.GL_LIGHTING); - } // #endif - - /* Use depth buffering for hidden surface elimination. */ - gl.glEnable(GL.GL_DEPTH_TEST); - - /* Setup the view of the cube. */ - gl.glMatrixMode(GL.GL_PROJECTION); - glu.gluPerspective( /* field of view in degree */ 40.0f, - /* aspect ratio */ 1.0f, - /* Z near */ 1.0f, /* Z far */ 10.0f); - gl.glMatrixMode(GL.GL_MODELVIEW); - glu.gluLookAt(0.0f, 0.0f, 5.0f, /* eye is at (0,0,5) */ - 0.0f, 0.0f, 0.0f, /* center is at (0,0,0) */ - 0.0f, 1.0f, 0.); /* up is in positive Y direction */ - - /* Adjust cube position to be asthetic angle. */ - gl.glTranslatef(0.0f, 0.0f, -1.0f); - if (true) { // #if 1 - gl.glRotatef(60, 1.0f, 0.0f, 0.0f); - gl.glRotatef(-20, 0.0f, 0.0f, 1.0f); - } //#endif - - } - - public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) - { - // do nothing - } - - public static void main(String[] argv) - { - Frame frame = new Frame("NVidia Cg Toolkit \"cgGL_vertex_example\" demo"); - GLCanvas canvas = new GLCanvas(); - canvas.addGLEventListener(new cgGL_vertex_example()); - - frame.add(canvas); - frame.setSize(500, 500); - frame.addWindowListener(new WindowAdapter() { - public void windowClosing(WindowEvent e) { - // Run this on another thread than the AWT event queue to - // avoid deadlocks on shutdown on some platforms - new Thread(new Runnable() { - public void run() { - System.exit(0); - } - }).start(); - } - }); - frame.show(); - } -} |