Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ////////////////////////////////////////////
- // Initialization code (RenderManagerLWJGL)
- ////////////////////////////////////////////
- // Clear color
- GL11.glClearColor(RendererManagerBase.clearColor[0], RendererManagerBase.clearColor[1],
- RendererManagerBase.clearColor[2], RendererManagerBase.clearColor[3]);
- // Check for VBO support
- String extensions = GL11.glGetString(GL11.GL_EXTENSIONS);
- if (extensions.contains("vertex_buffer_object")) {
- supportedVBO = true;
- } else {
- supportedVBO = false;
- }
- if (supportedVBO) {
- System.out.println("Vertex Buffer Objects Supported");
- } else {
- System.out.println("Vertex Buffer Objects NOT Supported");
- }
- GL11.glEnable(GL11.GL_LIGHTING);
- GL11.glEnable(GL11.GL_LIGHT0);
- GL11.glLight(GL11.GL_LIGHT0, GL11.GL_AMBIENT, zero);
- GL11.glMaterialf(GL11.GL_FRONT, GL11.GL_SHININESS, 30.0f);
- GL11.glEnable(GL12.GL_RESCALE_NORMAL);
- GL11.glDisable(GL11.GL_DITHER); //Disable dithering
- GL11.glClearDepth(1.0f); //Depth Buffer Setup
- //Really Nice Perspective Calculations
- GL11.glHint(GL11.GL_PERSPECTIVE_CORRECTION_HINT, GL11.GL_NICEST);
- ////////////////////////////////////////////
- // Draw code setup (RenderManagerLWJGL)
- ////////////////////////////////////////////
- GL11.glEnable(GL11.GL_DEPTH_TEST); //Enables Depth Testing
- GL11.glDepthFunc(GL11.GL_LEQUAL); //The Type Of Depth Testing To Do
- GL11.glDepthMask(true); //Enable depth buffer writing
- GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT );
- GL11.glLoadIdentity(); //Reset The Current Modelview Matrix
- GL11.glFrontFace(GL11.GL_CCW);
- GL11.glEnable(GL11.GL_POLYGON_OFFSET_FILL);
- GL11.glPolygonOffset(1.1f, 0.001f);
- RenderSet rSet = renderSets.get(0);
- RenderSetRendererLWJGL renderer = (RenderSetRendererLWJGL)rSet.getRenderer();
- renderer.setGlobalTextureState(globalTextureState);
- switch (drawMode) {
- case 0: // DM_EYE_VIEW
- setRenderGlobals(renderer);
- renderer.applyProjectionThenModelView(rSet, glu);
- renderer.render(rSet, glu);
- ...
- ////////////////////////////////////////////
- // Draw code setup (RenderSetRendererLWJGL)
- ////////////////////////////////////////////
- if (stats) {
- vertexCount = 0;
- triangleCount = 0;
- stateChanges = 0;
- }
- // reset Appearance tracking for this frame.
- lastAppearance = null;
- GL11.glTexEnvf(GL11.GL_TEXTURE_ENV, GL11.GL_TEXTURE_ENV_MODE, GL11.GL_MODULATE);
- applyLight(frame.getLight(), glu);
- GL11.glDisable(GL11.GL_BLEND);
- renderList(frame.getDrawListOpaque(), true && globalTextureState, 0, glu);
- ...
- ////////////////////////////////////////////
- // Draw code (RenderSetRendererLWJGL)
- ////////////////////////////////////////////
- public void render(Shape shape, GLU glu)
- {
- setRenderState(shape);
- VertexGeometry shapeGeo = shape.geometry;
- Appearance shapeApp = shape.appearance;
- if (currentMat != shape.matrix) {
- if (shape.matrix != null) {
- // pop last shapes matrix state
- GL11.glPopMatrix();
- // push in this shape's matrix state
- GL11.glPushMatrix();
- shape.matrixFB.put(shape.matrix);
- shape.matrixFB.rewind();
- GL11.glMultMatrix(shape.matrixFB);
- } else {
- // pop last shapes matrix state
- GL11.glPopMatrix();
- // push in this shape's matrix state
- GL11.glPushMatrix();
- }
- //System.out.println("Error: RenderShape null matrix");
- currentMat = shape.matrix;
- // stats
- alphaStateSwitchCount++;
- } else
- {
- // stats
- //System.out.println("Found matching transform state...");
- alphaStateShareCount++;
- }
- boolean useVOBs = (supportedVBO && (shapeGeo.staticHint || forceStaticRender));
- if (drawStatic == false && useVOBs) {
- return;
- }
- // check if VOB buffers are valid, if not generate them
- if (useVOBs && !shapeGeo.isBuffersLive()) {
- generateBuffers(shape, glu);
- }
- {
- GL11.glEnableClientState(GL11.GL_VERTEX_ARRAY);
- // if VOBs else use vertexpointer (arrays)
- if (useVOBs) {
- if (shapeGeo.vertexBuffer.isBound()) {
- GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, shapeGeo.vertexBuffer.getId());
- GL11.glVertexPointer(3, GL11.GL_FLOAT, 0, 0);
- } else {
- System.out.println("Setting vertex pointer failed!");
- }
- } else {
- shapeGeo.vertexBuffer.buffer.rewind();
- if (stats) {
- vertexCount += shapeGeo.vertexBuffer.buffer.limit() / 3;
- }
- if (shapeGeo.vertexBuffer.buffer.limit() == 0) {
- return;
- }
- GL11.glVertexPointer(3, GL11.GL_FLOAT, (FloatBuffer)shapeGeo.vertexBuffer.buffer);
- }
- lastVertexArraySet.vertexBuffer = shapeGeo.vertexBuffer;
- }
- {
- if (shapeGeo.colorBuffer.buffer != null) {
- // if VOBs else use colorpointer (arrays)
- GL11.glEnableClientState(GL11.GL_COLOR_ARRAY);
- GL11.glEnable(GL11.GL_COLOR_MATERIAL);
- if (useVOBs) {
- GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, shapeGeo.colorBuffer.getId());
- GL11.glColorPointer(4, GL11.GL_FLOAT, 0, 0);
- } else {
- shapeGeo.colorBuffer.buffer.rewind();
- GL11.glColorPointer(4, GL11.GL_FLOAT, (FloatBuffer)shapeGeo.colorBuffer.buffer);
- }
- } else {
- GL11.glDisableClientState(GL11.GL_COLOR_ARRAY);
- GL11.glDisable(GL11.GL_COLOR_MATERIAL);
- }
- }
- lastVertexArraySet.colorBuffer.setId(shapeGeo.colorBuffer.getId());
- if (shapeGeo.normalBuffer.buffer != null) {
- GL11.glEnableClientState(GL11.GL_NORMAL_ARRAY);
- // if VOBs else use normalpointer (arrays)
- if (useVOBs) {
- GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, shapeGeo.normalBuffer.getId());
- GL11.glNormalPointer(GL11.GL_FLOAT, 0, 0);
- } else {
- shapeGeo.normalBuffer.buffer.rewind();
- GL11.glNormalPointer(GL11.GL_FLOAT, (FloatBuffer)shapeGeo.normalBuffer.buffer);
- }
- } else {
- GL11.glDisableClientState(GL11.GL_NORMAL_ARRAY);
- }
- lastVertexArraySet.normalBuffer = shapeGeo.normalBuffer;
- {
- if ((shapeGeo.textureCoordArray != null)
- && (shapeApp.textureStageState != null)) {
- GL11.glEnable(GL11.GL_TEXTURE_2D);
- if (!this.globalWireFrameState) {
- // set up GL13.GL_TEXTURE0
- if (shapeGeo.textureCoordArray.length > 0) {
- GL13.glClientActiveTexture(GL13.GL_TEXTURE0);
- // if VOBs else use normalpointer (arrays)
- if (useVOBs) {
- GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER,
- shapeGeo.textureCoordArray[0].getId());
- GL11.glTexCoordPointer(2, GL11.GL_FLOAT, 0, 0);
- } else {
- if (shapeGeo.textureCoordArray[0].buffer == null) {
- throw new RuntimeException("shapeVAS.textureCoordArray[0].buffer == null;
- Shape name: " + shape.getName());
- }
- shapeGeo.textureCoordArray[0].buffer.rewind();
- GL11.glTexCoordPointer(2, GL11.GL_FLOAT,
- (FloatBuffer)shapeGeo.textureCoordArray[0].buffer);
- }
- GL11.glEnableClientState(GL11.GL_TEXTURE_COORD_ARRAY);
- }
- if (shapeGeo.textureCoordArray.length > 1) {
- GL13.glClientActiveTexture(GL13.GL_TEXTURE1);
- // if VOBs else use normalpointer (arrays)
- if (useVOBs) {
- GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER,
- shapeGeo.textureCoordArray[1].getId());
- GL11.glTexCoordPointer(2, GL11.GL_FLOAT, 0, 0);
- } else {
- shapeGeo.textureCoordArray[1].buffer.rewind();
- GL11.glTexCoordPointer(2, GL11.GL_FLOAT,
- (FloatBuffer)shapeGeo.textureCoordArray[1].buffer);
- }
- GL11.glEnableClientState(GL11.GL_TEXTURE_COORD_ARRAY);
- } else {
- GL13.glClientActiveTexture(GL13.GL_TEXTURE1);
- GL11.glDisableClientState(GL11.GL_TEXTURE_COORD_ARRAY);
- GL11.glDisable(GL11.GL_TEXTURE_2D);
- }
- }
- } else {
- GL11.glDisableClientState(GL11.GL_TEXTURE_COORD_ARRAY);
- GL11.glDisable(GL11.GL_TEXTURE_2D);
- }
- }
- // if VOBs else use arrays
- if (shapeGeo.glType == GL11.GL_LINES) {
- GL11.glLineWidth(shapeApp.lineWidth);
- }
- if (useVOBs) {
- GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, shapeGeo.indicesBuffer.getId());
- lastVertexArraySet.indicesBuffer = shapeGeo.indicesBuffer;
- if (DataBuffer.useAndroidOpts)
- {
- GL11.glDrawElements(
- shapeGeo.glType,
- shapeGeo.indicesBuffer.buffer.capacity(),
- GL11.GL_UNSIGNED_SHORT,
- 0);
- }
- else
- {
- GL11.glDrawElements(
- shapeGeo.glType,
- shapeGeo.indicesBuffer.buffer.capacity(),
- GL11.GL_UNSIGNED_INT,
- 0);
- }
- // clear buffer pointers TODO: remove?
- GL15.glBindBuffer(GL15.GL_ELEMENT_ARRAY_BUFFER, 0);
- GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);
- } else {
- if (shapeGeo.glType == GL11.GL_TRIANGLE_STRIP) {
- if (stats) {
- triangleCount += shapeGeo.vertexBuffer.buffer.limit();
- }
- // /3 beacuse it wants vertex count not data size
- GL11.glDrawArrays(GL11.GL_TRIANGLE_STRIP, 0, shapeGeo.vertexBuffer.buffer.limit() / 3);
- } else {
- if (emuDebug) {
- GL13.glActiveTexture(GL13.GL_TEXTURE0);
- GL11.glDisable(GL11.GL_TEXTURE_2D);
- GL13.glActiveTexture(GL13.GL_TEXTURE1);
- GL11.glDisable(GL11.GL_TEXTURE_2D);
- shapeGeo.glType = JGL.LINES;
- }
- shapeGeo.indicesBuffer.buffer.rewind();
- if (stats) {
- triangleCount += shapeGeo.indicesBuffer.buffer.limit() / 3;
- }
- if (DataBuffer.useAndroidOpts)
- {
- // Testing sanity checks
- GL11.glDisableClientState(GL11.GL_NORMAL_ARRAY);
- GL11.glDisableClientState(GL11.GL_TEXTURE_COORD_ARRAY);
- GL11.glDisableClientState(GL11.GL_COLOR_ARRAY);
- System.out.println("Index array size for the test cube (should be 36): " +
- shapeGeo.indicesBuffer.buffer);
- System.out.println("Vertex array size for the test cube (should be 24): " +
- shapeGeo.vertexBuffer.buffer);
- GL11.glDrawElements(
- shapeGeo.glType,
- (ShortBuffer)shapeGeo.indicesBuffer.buffer);
- !! !!!CRASH!!!
- ...
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement