@Override public void init(GLAutoDrawable dr) { GL2 gl = dr.getGL().getGL2(); // Задает цвет фона gl.glClearColor(0f, 0f, 0f, 0f); gl.glClearDepth(1.0f); // Интерполирует цвет, если вершины заданы различным цветом gl.glShadeModel(GL2.GL_SMOOTH); // Удаления невидимых линий и поверхностей gl.glEnable(GL.GL_DEPTH_TEST); gl.glDepthFunc(GL.GL_LEQUAL); // Сглаживание gl.glHint(GL2.GL_PERSPECTIVE_CORRECTION_HINT, GL.GL_NICEST); // Включение отображения текстур gl.glEnable(GL.GL_TEXTURE_2D); try { model = ModelFactory.createModel("model/globalstar/Globalstar.3ds"); model.setUseLighting(false); } catch (Exception e) { System.out.println("Ошибка загрузки модели"); e.printStackTrace(); System.exit(1); } }
/** * Called back immediately after the OpenGL context is initialized. Can be used to perform * one-time initialization. Run only once. */ @Override public void init(GLAutoDrawable drawable) { GL2 gl = drawable.getGL().getGL2(); // get the OpenGL graphics context glu = new GLU(); // get GL Utilities gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f); // set background (clear) color gl.glClearDepth(1.0f); // set clear depth value to farthest gl.glEnable(GL_DEPTH_TEST); // enables depth testing gl.glDepthFunc(GL_LEQUAL); // the type of depth test to do gl.glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); // best perspective correction gl.glShadeModel(GL_SMOOTH); // blends colors nicely, and smoothes out lighting // Load the texture image try { // Create a OpenGL Texture object from (URL, mipmap, file suffix) // Use URL so that can read from JAR and disk file. texture = TextureIO.newTexture( this.getClass().getResource(textureFileName), false, textureFileType); } catch (GLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } // Use linear filter for texture if image is larger than the original texture gl.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); // Use linear filter for texture if image is smaller than the original texture gl.glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); // Texture image flips vertically. Shall use TextureCoords class to retrieve // the top, bottom, left and right coordinates, instead of using 0.0f and 1.0f. TextureCoords textureCoords = texture.getImageTexCoords(); textureTop = textureCoords.top(); textureBottom = textureCoords.bottom(); // textureLeft = textureCoords.left(); // textureRight = textureCoords.right(); // Enable the texture texture.enable(gl); // gl.glEnable(GL_TEXTURE_2D); // we want back facing polygons to be filled completely and that we want front // facing polygons to be outlined only. gl.glPolygonMode(GL_BACK, GL_FILL); // Back Face Is Filled In gl.glPolygonMode(GL_FRONT, GL_LINE); // Front Face Is Drawn With Lines for (int x = 0; x < numPoints; x++) { // Loop Through The Y Plane for (int y = 0; y < numPoints; y++) { // Apply The Wave To Our Mesh // xmax is 45. Get 9 after dividing by 5. Subtract 4.5 to centralize. points[x][y][0] = (float) x / 5.0f - 4.5f; points[x][y][1] = (float) y / 5.0f - 4.5f; // Sine wave pattern points[x][y][2] = (float) (Math.sin(Math.toRadians(x / 5.0f * 40.0f))); } } }
public void init(GLAutoDrawable gLDrawable) { GL2 gl = gLDrawable.getGL().getGL2(); gl.glShadeModel(GLLightingFunc.GL_SMOOTH); gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f); gl.glClearDepth(1.0f); gl.glEnable(GL.GL_DEPTH_TEST); gl.glDepthFunc(GL.GL_LEQUAL); gl.glHint(GL2ES1.GL_PERSPECTIVE_CORRECTION_HINT, GL.GL_NICEST); }
public void init(GLAutoDrawable drawable) { GL2 gl = drawable.getGL().getGL2(); glu = new GLU(); // gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f); gl.glDepthFunc(GL.GL_LESS); gl.glEnable(GL.GL_DEPTH_TEST); gl.glShadeModel(GL2.GL_FLAT); gl.glDepthRange(0.0, 1.0); /* The default z mapping */ }
public void init(GLAutoDrawable drawable) { GL2 gl = drawable.getGL().getGL2(); glut = new GLUT(); // gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f); makeStripeImage(); gl.glPixelStorei(GL.GL_UNPACK_ALIGNMENT, 1); gl.glGenTextures(1, texName, 0); gl.glBindTexture(GL2.GL_TEXTURE_1D, texName[0]); gl.glTexParameterf(GL2.GL_TEXTURE_1D, GL2.GL_TEXTURE_WRAP_S, GL2.GL_REPEAT); gl.glTexParameterf( GL2.GL_TEXTURE_1D, // GL2.GL_TEXTURE_MAG_FILTER, GL.GL_LINEAR); gl.glTexParameterf( GL2.GL_TEXTURE_1D, // GL2.GL_TEXTURE_MIN_FILTER, GL.GL_LINEAR); gl.glTexImage1D( GL2.GL_TEXTURE_1D, 0, GL2.GL_RGBA, stripeImageWidth, // 0, GL2.GL_RGB, GL.GL_UNSIGNED_BYTE, stripeImageBuf); gl.glTexEnvf(GL2.GL_TEXTURE_ENV, GL2.GL_TEXTURE_ENV_MODE, GL2.GL_MODULATE); currentCoeff = xequalzero; currentGenMode = GL2.GL_OBJECT_LINEAR; currentPlane = GL2.GL_OBJECT_PLANE; gl.glTexGeni(GL2.GL_S, GL2.GL_TEXTURE_GEN_MODE, GL2.GL_OBJECT_LINEAR); gl.glTexGendv(GL2.GL_S, GL2.GL_OBJECT_PLANE, currentCoeff, 0); // gl.glEnable(GL.GL_DEPTH_TEST); gl.glDepthFunc(GL.GL_LESS); gl.glEnable(GL2.GL_TEXTURE_GEN_S); gl.glEnable(GL2.GL_TEXTURE_1D); gl.glEnable(GL.GL_CULL_FACE); gl.glEnable(GL2.GL_LIGHTING); gl.glEnable(GL2.GL_LIGHT0); gl.glEnable(GL2.GL_AUTO_NORMAL); gl.glEnable(GL2.GL_NORMALIZE); gl.glFrontFace(GL.GL_CW); gl.glCullFace(GL.GL_BACK); gl.glMaterialf(GL.GL_FRONT, GL2.GL_SHININESS, 64.0f); }
@Override public void init(GLAutoDrawable drawable) { GL2 gl = (GL2) drawable.getGL(); GLUgl2 glu = new GLUgl2(); if (!gl.isExtensionAvailable("GL_ARB_vertex_buffer_object")) System.out.println("Error: VBO support is missing"); gl.glShadeModel(GL2.GL_SMOOTH); gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f); gl.glClearDepth(1.0f); gl.glEnable(GL2.GL_DEPTH_TEST); gl.glDepthFunc(GL2.GL_LEQUAL); gl.glHint(GL2.GL_PERSPECTIVE_CORRECTION_HINT, GL2.GL_NICEST); game = new Game(gl, glu, input); }
/* (non-Javadoc) * @see javax.media.opengl.GLEventListener#init(javax.media.opengl.GLAutoDrawable) */ public void init(GLAutoDrawable drawable) { GL2 gl = drawable.getGL().getGL2(); gl.setSwapInterval(1); gl.glClearColor(0, 0, 0, 0); gl.glClearDepth(1.0); // Depth Buffer Setup gl.glEnable(GL2.GL_DEPTH_TEST); // Enables Depth Testing gl.glDepthFunc(GL2.GL_LEQUAL); // The Type Of Depth Test To Do gl.glHint(GL2.GL_PERSPECTIVE_CORRECTION_HINT, GL2.GL_NICEST); this.gl = new DebugGL2(gl); // this.gl = gl; drawable.setGL(this.gl); glu = new GLU(); System.out.println("Init GL is " + this.gl.getClass().getName()); // setupLight(this.gl); setFocus(); }
/* * Initialize material property and light source. */ public void init(GLAutoDrawable drawable) { GL2 gl = drawable.getGL().getGL2(); // float light_ambient[] = {0.0f, 0.0f, 0.0f, 1.0f}; float light_diffuse[] = {1.0f, 0.0f, 1.0f, 1.0f}; float light_specular[] = {1.0f, 0.0f, 1.0f, 1.0f}; /* light_position is NOT default value */ float light_position[] = {1.0f, 1.0f, 1.0f, 0.0f}; gl.glLightfv(GL2.GL_LIGHT0, GL2.GL_SPECULAR, light_ambient, 0); gl.glLightfv(GL2.GL_LIGHT0, GL2.GL_DIFFUSE, light_diffuse, 0); gl.glLightfv(GL2.GL_LIGHT0, GL2.GL_SPECULAR, light_specular, 0); gl.glLightfv(GL2.GL_LIGHT0, GL2.GL_POSITION, light_position, 0); gl.glEnable(GL2.GL_LIGHTING); gl.glEnable(GL2.GL_LIGHT0); gl.glDepthFunc(GL.GL_LESS); gl.glEnable(GL.GL_DEPTH_TEST); }
@Override public void init(GLAutoDrawable dr) { GL2 gl = dr.getGL().getGL2(); // Задает цвет фона gl.glClearColor(0f, 0f, 0f, 0f); gl.glClearDepth(1.0f); // Интерполирует цвет, если вершины заданы различным цветом gl.glShadeModel(GL2.GL_SMOOTH); // Удаления невидимых линий и поверхностей gl.glEnable(GL.GL_DEPTH_TEST); gl.glDepthFunc(GL.GL_LEQUAL); // Сглаживание gl.glHint(GL2.GL_PERSPECTIVE_CORRECTION_HINT, GL.GL_NICEST); // Включение отображения текстур gl.glEnable(GL.GL_TEXTURE_2D); try { this.texture = TextureIO.newTexture(new File("img/earth.jpg"), false); } catch (IOException exception) { exception.printStackTrace(); } }
public void display(GLAutoDrawable drawable) { update(); GL2 gl = drawable.getGL().getGL2(); // Clear Color Buffer, Depth Buffer gl.glClear(GL2.GL_COLOR_BUFFER_BIT | GL2.GL_DEPTH_BUFFER_BIT); Matrix TmpMatrix = new Matrix(); // Temporary MATRIX Structure ( NEW ) Vector TmpVector = new Vector(), TmpNormal = new Vector(); // Temporary // VECTOR // Structures // ( NEW ) gl.glLoadIdentity(); // Reset The Matrix if (outlineSmooth) { // Check To See If We Want Anti-Aliased Lines ( NEW // ) gl.glHint(GL2.GL_LINE_SMOOTH_HINT, GL2.GL_NICEST); // Use The Good // Calculations // ( NEW ) gl.glEnable(GL2.GL_LINE_SMOOTH); // Enable Anti-Aliasing ( NEW ) } else // We Don't Want Smooth Lines ( NEW ) gl.glDisable(GL2.GL_LINE_SMOOTH); // Disable Anti-Aliasing ( NEW ) gl.glTranslatef(0.0f, 0.0f, -2.0f); // Move 2 Units Away From The Screen // ( NEW ) gl.glRotatef(modelAngle, 0.0f, 1.0f, 0.0f); // Rotate The Model On It's // Y-Axis ( NEW ) gl.glGetFloatv(GLMatrixFunc.GL_MODELVIEW_MATRIX, TmpMatrix.Data, 0); // Get // The // Generated // Matrix // ( // NEW // ) // Cel-Shading Code // gl.glEnable(GL2.GL_TEXTURE_1D); // Enable 1D Texturing ( NEW ) gl.glBindTexture(GL2.GL_TEXTURE_1D, shaderTexture[0]); // Bind Our // Texture ( NEW // ) gl.glColor3f(1.0f, 1.0f, 1.0f); // Set The Color Of The Model ( NEW ) gl.glBegin(GL2.GL_TRIANGLES); // Tell OpenGL That We're Drawing // Triangles // Loop Through Each Polygon for (int i = 0; i < polyNum; i++) // Loop Through Each Vertex for (int j = 0; j < 3; j++) { // Fill Up The TmpNormal Structure With TmpNormal.X = polyData[i].Verts[j].Nor.X; // The Current Vertices' Normal Values TmpNormal.Y = polyData[i].Verts[j].Nor.Y; TmpNormal.Z = polyData[i].Verts[j].Nor.Z; // Rotate This By The Matrix TmpMatrix.rotateVector(TmpNormal, TmpVector); // Normalize The New Normal TmpVector.normalize(); // Calculate The Shade Value float TmpShade = Vector.dotProduct(TmpVector, lightAngle); // Clamp The Value to 0 If Negative ( NEW ) if (TmpShade < 0.0f) { TmpShade = 0.0f; } // Set The Texture Co-ordinate As The Shade Value gl.glTexCoord1f(TmpShade); // Send The Vertex Position gl.glVertex3f( polyData[i].Verts[j].Pos.X, polyData[i].Verts[j].Pos.Y, polyData[i].Verts[j].Pos.Z); } gl.glEnd(); // Tell OpenGL To Finish Drawing gl.glDisable(GL2.GL_TEXTURE_1D); // Disable 1D Textures ( NEW ) // Outline Code // Check To See If We Want To Draw The Outline if (outlineDraw) { // Enable Blending gl.glEnable(GL2.GL_BLEND); // Set The Blend Mode gl.glBlendFunc(GL2.GL_SRC_ALPHA, GL2.GL_ONE_MINUS_SRC_ALPHA); // Draw Backfacing Polygons As Wireframes gl.glPolygonMode(GL2.GL_BACK, GL2.GL_LINE); // Set The Line Width gl.glLineWidth(outlineWidth); // Don't Draw Any Front-Facing Polygons gl.glCullFace(GL2.GL_FRONT); // Change The Depth Mode gl.glDepthFunc(GL2.GL_LEQUAL); // Set The Outline Color gl.glColor3fv(outlineColor, 0); // Tell OpenGL What We Want To Draw gl.glBegin(GL2.GL_TRIANGLES); // Loop Through Each Polygon for (int i = 0; i < polyNum; i++) { // Loop Through Each Vertex for (int j = 0; j < 3; j++) { // Send The Vertex Position gl.glVertex3f( polyData[i].Verts[j].Pos.X, polyData[i].Verts[j].Pos.Y, polyData[i].Verts[j].Pos.Z); } } gl.glEnd(); // Tell OpenGL We've Finished // Reset The Depth-Testing Mode gl.glDepthFunc(GL2.GL_LESS); // Reset The Face To Be Culled gl.glCullFace(GL2.GL_BACK); // Reset Back-Facing Polygon Drawing Mode gl.glPolygonMode(GL2.GL_BACK, GL2.GL_FILL); // Disable Blending gl.glDisable(GL2.GL_BLEND); } // Check To See If Rotation Is Enabled if (modelRotate) { // Update Angle Based On The Clock modelAngle += .2f; } }
public void init(GLAutoDrawable drawable) { GL2 gl = drawable.getGL().getGL2(); // Storage for the 96 Shader Values ( NEW ) FloatBuffer shaderData = GLBuffers.newDirectFloatBuffer(96); // Start Of User Initialization // Really Nice perspective calculations Light Grey Background gl.glHint(GL2.GL_PERSPECTIVE_CORRECTION_HINT, GL2.GL_NICEST); gl.glClearColor(0.7f, 0.7f, 0.7f, 0.0f); // Depth Buffer Setup gl.glClearDepth(1.0f); // Enable Depth Testing gl.glEnable(GL2.GL_DEPTH_TEST); // The Type Of Depth Test To Do gl.glDepthFunc(GL2.GL_LESS); // Enables Smooth Color Shading ( NEW ) gl.glShadeModel(GL2.GL_SMOOTH); // Initially Disable Line Smoothing ( NEW ) gl.glDisable(GL2.GL_LINE_SMOOTH); // Enable OpenGL Face Culling ( NEW ) gl.glEnable(GL2.GL_CULL_FACE); // Disable OpenGL Lighting ( NEW ) gl.glDisable(GL2.GL_LIGHTING); StringBuffer readShaderData = new StringBuffer(); try { InputStream inputStream = ResourceRetriever.getResourceAsStream("demos/data/models/Shader.txt"); int info; while ((info = inputStream.read()) != -1) readShaderData.append((char) info); inputStream.close(); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException(e); } StringTokenizer tokenizer = new StringTokenizer(readShaderData.toString()); // Loop Though The 32 Greyscale Values while (tokenizer.hasMoreTokens()) { float value = Float.parseFloat(tokenizer.nextToken()); shaderData.put(value); shaderData.put(value); shaderData.put(value); } shaderData.flip(); gl.glGenTextures(1, shaderTexture, 0); // Get A Free Texture ID ( NEW ) gl.glBindTexture(GL2.GL_TEXTURE_1D, shaderTexture[0]); // Bind This // Texture. From // Now On It // Will Be 1D // For Crying Out Loud Don't Let OpenGL Use Bi/Trilinear Filtering! gl.glTexParameteri(GL2.GL_TEXTURE_1D, GL2.GL_TEXTURE_MAG_FILTER, GL2.GL_NEAREST); gl.glTexParameteri(GL2.GL_TEXTURE_1D, GL2.GL_TEXTURE_MIN_FILTER, GL2.GL_NEAREST); gl.glTexImage1D( GL2.GL_TEXTURE_1D, 0, GL2.GL_RGB, 32, 0, GL2.GL_RGB, GL2.GL_FLOAT, shaderData); // Upload // Set The X Direction lightAngle.X = 0.0f; // Set The Y Direction lightAngle.Y = 0.0f; // Set The Z Direction lightAngle.Z = 1.0f; lightAngle.normalize(); try { // Return The Value Of ReadMesh readMesh(); } catch (IOException e) { throw new RuntimeException(e); } }