List of usage examples for org.lwjgl.opengl GL11 glRotatef
public static native void glRotatef(@NativeType("GLfloat") float angle, @NativeType("GLfloat") float x, @NativeType("GLfloat") float y, @NativeType("GLfloat") float z);
From source file:com.mrcrayfish.furniture.render.tileentity.ToastRenderer.java
License:Open Source License
@Override public void renderTileEntityAt(TileEntity tileEntity, double posX, double posY, double posZ, float p_180535_8_, int p_180535_9_) { TileEntityToaster tileEntityToaster = (TileEntityToaster) tileEntity; Block block = tileEntity.getBlockType(); int metadata = block.getMetaFromState(tileEntity.getWorld().getBlockState(tileEntity.getPos())); for (int i = 0; i < 2; i++) { ItemStack slice = tileEntityToaster.getSlice(i); if (slice != null) { this.slots[i].setEntityItemStack(slice); GL11.glPushMatrix();/* ww w . j a v a 2s. c o m*/ slots[i].hoverStart = 0.0F; GL11.glTranslatef((float) posX + 0.5F, (float) posY + 0.05F, (float) posZ + 0.3F); double xOffset = 0.0D; double zOffset = 0.0D; switch (metadata) { case 0: if (i == 1) { zOffset += 0.27F; } else { zOffset += 0.14F; } break; case 1: xOffset += 0.2F; if (i == 1) { zOffset += 0.07F; } else { zOffset -= 0.06F; } GL11.glRotatef(270, 0, 1, 0); break; case 2: if (i == 1) { zOffset -= 0.13F; } else { zOffset -= 0.26F; } GL11.glRotatef(180, 0, 1, 0); break; case 3: xOffset -= 0.2F; if (i == 1) { zOffset += 0.07F; } else { zOffset -= 0.06F; } GL11.glRotatef(90, 0, 1, 0); break; } double yOffset = tileEntityToaster.isToasting() ? -0.075 : 0.0; Minecraft.getMinecraft().getRenderManager().renderEntityWithPosYaw(slots[i], 0.0D + xOffset, 0.1D + yOffset, 0.0D + zOffset, 0.0F, 0.0F); GL11.glPopMatrix(); } } }
From source file:com.mrcrayfish.furniture.render.tileentity.WashingMachineRenderer.java
License:Open Source License
@Override public void renderTileEntityAt(TileEntity tileEntity, double posX, double posY, double posZ, float p_180535_8_, int p_180535_9_) { TileEntityWashingMachine tileEntityWashingMachine = (TileEntityWashingMachine) tileEntity; Block block = tileEntity.getBlockType(); int metadata = block.getMetaFromState(tileEntity.getWorld().getBlockState(tileEntity.getPos())); GL11.glPushMatrix();// w w w .j a v a2 s . co m GL11.glTranslatef((float) posX + 0.5F, (float) posY + 0.5F, (float) posZ + 0.5F); GL11.glRotatef(metadata * -90F, 0, 1, 0); this.armour.hoverStart = 0.0F; for (int i = 0; i < 4; i++) { if (tileEntityWashingMachine.getStackInSlot(i) != null) { double zOffset = getOffsetZ(metadata, i); armour.setEntityItemStack(tileEntityWashingMachine.getStackInSlot(i)); GL11.glRotated(tileEntityWashingMachine.progress * 5, 0, 0, 1); Minecraft.getMinecraft().getRenderManager().renderEntityWithPosYaw(armour, 0.0, -0.35D, zOffset, 0.0F, 0.0F); } } GL11.glPopMatrix(); }
From source file:com.mtbs3d.minecrift.VRRenderer.java
License:LGPL
/** * sets up projection, view effects, camera position/rotation *//* w w w .j ava 2 s . co m*/ private void setupCameraTransform(float renderPartialTicks, int renderSceneNumber) { GL11.glMatrixMode(GL11.GL_PROJECTION); GL11.glLoadIdentity(); if (renderSceneNumber == 0) { // Left eye FloatBuffer leftProj = eyeRenderParams.gl_getLeftProjectionMatrix(); GL11.glLoadMatrix(leftProj); //mc.checkGLError("Set left projection"); } else { // Right eye FloatBuffer rightProj = eyeRenderParams.gl_getRightProjectionMatrix(); GL11.glLoadMatrix(rightProj); //mc.checkGLError("Set right projection"); } float var5; if (this.mc.playerController != null && this.mc.playerController.enableEverythingIsScrewedUpMode()) { var5 = 0.6666667F; GL11.glScalef(1.0F, var5, 1.0F); } GL11.glMatrixMode(GL11.GL_MODELVIEW); GL11.glLoadIdentity(); //First, IPD transformation if (renderSceneNumber == 0) { // Left eye FloatBuffer leftEyeTransform = eyeRenderParams.gl_getLeftViewportTransform(); GL11.glMultMatrix(leftEyeTransform); } else { // Right eye FloatBuffer rightEyeTransform = eyeRenderParams.gl_getRightViewportTransform(); GL11.glMultMatrix(rightEyeTransform); } // Camera height offset float cameraYOffset = 1.62f - (this.mc.vrSettings.getPlayerEyeHeight() - this.mc.vrSettings.neckBaseToEyeHeight); EntityLivingBase entity = this.mc.renderViewEntity; if (entity != null) { //Do in-game camera adjustments if renderViewEntity exists //A few game effects this.hurtCameraEffect(renderPartialTicks); if (this.mc.gameSettings.viewBobbing) { this.setupViewBobbing(renderPartialTicks); } var5 = this.mc.thePlayer.prevTimeInPortal + (this.mc.thePlayer.timeInPortal - this.mc.thePlayer.prevTimeInPortal) * renderPartialTicks; if (var5 > 0.0F) { byte var6 = 20; if (this.mc.thePlayer.isPotionActive(Potion.confusion)) { var6 = 7; } float var7 = 5.0F / (var5 * var5 + 5.0F) - var5 * 0.04F; var7 *= var7; GL11.glRotatef(((float) this.rendererUpdateCount + renderPartialTicks) * (float) var6, 0.0F, 1.0F, 1.0F); GL11.glScalef(1.0F / var7, 1.0F, 1.0F); GL11.glRotatef(-((float) this.rendererUpdateCount + renderPartialTicks) * (float) var6, 0.0F, 1.0F, 1.0F); } if (this.mc.gameSettings.thirdPersonView > 0) { float thirdPersonCameraDist = this.thirdPersonDistanceTemp + (this.thirdPersonDistance - this.thirdPersonDistanceTemp) * renderPartialTicks; float thirdPersonYaw; float thirdPersonPitch; if (this.mc.gameSettings.debugCamEnable) { thirdPersonYaw = this.prevDebugCamYaw + (this.debugCamYaw - this.prevDebugCamYaw) * renderPartialTicks; thirdPersonPitch = this.prevDebugCamPitch + (this.debugCamPitch - this.prevDebugCamPitch) * renderPartialTicks; GL11.glTranslatef(0.0F, 0.0F, (float) (-thirdPersonCameraDist)); GL11.glRotatef(thirdPersonYaw, 1.0F, 0.0F, 0.0F); GL11.glRotatef(thirdPersonPitch, 0.0F, 1.0F, 0.0F); } else { thirdPersonYaw = cameraYaw; thirdPersonPitch = cameraPitch; if (this.mc.gameSettings.thirdPersonView == 2) { thirdPersonPitch += 180.0F; } float PIOVER180 = (float) (Math.PI / 180); //For doing camera collision detection double camX = renderOriginX + camRelX; double camY = renderOriginY + camRelY - cameraYOffset; double camZ = renderOriginZ + camRelZ; float camXOffset = -MathHelper.sin(thirdPersonYaw * PIOVER180) * MathHelper.cos(thirdPersonPitch * PIOVER180) * thirdPersonCameraDist; float camZOffset = MathHelper.cos(thirdPersonYaw * PIOVER180) * MathHelper.cos(thirdPersonPitch * PIOVER180) * thirdPersonCameraDist; float camYOffset = -MathHelper.sin(thirdPersonPitch * PIOVER180) * thirdPersonCameraDist; thirdPersonCameraDist = checkCameraCollision(camX, camY, camZ, camXOffset, camYOffset, camZOffset, thirdPersonCameraDist); if (this.mc.gameSettings.thirdPersonView == 2) { GL11.glRotatef(180.0F, 0.0F, 1.0F, 0.0F); } GL11.glRotatef(cameraPitch - thirdPersonPitch, 1.0F, 0.0F, 0.0F); GL11.glRotatef(cameraYaw - thirdPersonYaw, 0.0F, 1.0F, 0.0F); GL11.glTranslatef(0.0F, 0.0F, (float) (-thirdPersonCameraDist)); GL11.glRotatef(thirdPersonYaw - cameraYaw, 0.0F, 1.0F, 0.0F); GL11.glRotatef(thirdPersonPitch - cameraPitch, 1.0F, 0.0F, 0.0F); } } } if (!this.mc.gameSettings.debugCamEnable) { // if (this.mc.vrSettings.useQuaternions) // { // //GL11.glMultMatrix(cameraMatrix4f); // This doesn't work currently - we still need // // the weird +180... // // // So do this instead... // float[] rawYawPitchRoll = OculusRift.getEulerAngles(orientation.x, // orientation.y, // orientation.z, // orientation.w, // 1f, // OculusRift.HANDED_L, // OculusRift.ROTATE_CCW); // // if (this.mc.gameSettings.thirdPersonView == 2) // GL11.glRotatef(-rawYawPitchRoll[2], 0.0F, 0.0F, 1.0F); // else // GL11.glRotatef(rawYawPitchRoll[2], 0.0F, 0.0F, 1.0F); // // GL11.glRotatef(rawYawPitchRoll[1], 1.0F, 0.0F, 0.0F); // GL11.glRotatef(rawYawPitchRoll[0] + 180.0F, 0.0F, 1.0F, 0.0F); // } // else // { if (this.mc.gameSettings.thirdPersonView == 2) GL11.glRotatef(-this.cameraRoll, 0.0F, 0.0F, 1.0F); else GL11.glRotatef(this.cameraRoll, 0.0F, 0.0F, 1.0F); GL11.glRotatef(this.cameraPitch, 1.0F, 0.0F, 0.0F); GL11.glRotatef(this.cameraYaw + 180.0F, 0.0F, 1.0F, 0.0F); // } } GL11.glTranslated(-camRelX, cameraYOffset - camRelY, -camRelZ); if (this.debugViewDirection > 0) { int var8 = this.debugViewDirection - 1; if (var8 == 1) { GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F); } if (var8 == 2) { GL11.glRotatef(180.0F, 0.0F, 1.0F, 0.0F); } if (var8 == 3) { GL11.glRotatef(-90.0F, 0.0F, 1.0F, 0.0F); } if (var8 == 4) { GL11.glRotatef(90.0F, 1.0F, 0.0F, 0.0F); } if (var8 == 5) { GL11.glRotatef(-90.0F, 1.0F, 0.0F, 0.0F); } } }
From source file:com.mtbs3d.minecrift.VRRenderer.java
License:LGPL
public void renderGUIandWorld(float renderPartialTicks) { this.farPlaneDistance = (float) this.mc.gameSettings.ofRenderDistanceFine; if (Config.isFogFancy()) { this.farPlaneDistance *= 0.95F; }//from w ww . j a v a2 s . co m if (Config.isFogFast()) { this.farPlaneDistance *= 0.83F; } if (this.prevFarPlaneDistance != this.farPlaneDistance) { _FBOInitialised = false; this.prevFarPlaneDistance = this.farPlaneDistance; } //Ensure FBO are in place and initialized if (!setupFBOs()) return; boolean guiShowingThisFrame = false; int mouseX = 0; int mouseY = 0; ScaledResolution var15 = new ScaledResolution(this.mc.gameSettings, this.mc.displayWidth, this.mc.displayHeight); int var16 = var15.getScaledWidth(); int var17 = var15.getScaledHeight(); if ((this.mc.theWorld != null && !this.mc.gameSettings.hideGUI && this.mc.thePlayer.getSleepTimer() == 0) || this.mc.currentScreen != null || this.mc.loadingScreen.isEnabled()) { //Render all UI elements into guiFBO mouseX = Mouse.getX() * var16 / this.mc.displayWidth; mouseY = var17 - Mouse.getY() * var17 / this.mc.displayHeight - 1; guiFBO.bindRenderTarget(); GL11.glViewport(0, 0, this.mc.displayWidth, this.mc.displayHeight); GL11.glClearColor(0, 0, 0, 0); GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT); GL11.glMatrixMode(GL11.GL_PROJECTION); GL11.glLoadIdentity(); GL11.glOrtho(0.0D, var15.getScaledWidth_double(), var15.getScaledHeight_double(), 0.0D, 1000.0D, 3000.0D); GL11.glMatrixMode(GL11.GL_MODELVIEW); GL11.glLoadIdentity(); GL11.glTranslatef(0.0F, 0.0F, -2000.0F); guiShowingThisFrame = true; } // Display loading / progress window if necessary if (this.mc.loadingScreen.isEnabled()) { this.mc.loadingScreen.vrRender(var16, var17); GL11.glClear(GL11.GL_DEPTH_BUFFER_BIT); } else if (this.mc.theWorld != null && !this.mc.gameSettings.hideGUI && !this.blankGUIUntilWorldValid) { //Disable any forge gui crosshairs and helmet overlay (pumkinblur) if (Reflector.ForgeGuiIngame_renderCrosshairs.exists()) { Reflector.ForgeGuiIngame_renderCrosshairs.setValue(false); Reflector.ForgeGuiIngame_renderHelmet.setValue(false); } //Draw in game GUI this.mc.ingameGUI.renderGameOverlay(renderPartialTicks, this.mc.currentScreen != null, mouseX, mouseY); guiAchievement.updateAchievementWindow(); GL11.glClear(GL11.GL_DEPTH_BUFFER_BIT); } if (this.blankGUIUntilWorldValid) { if (this.mc.theWorld != null) this.blankGUIUntilWorldValid = false; } if (this.mc.loadingScreen.isEnabled() == false && this.mc.currentScreen != null && !this.blankGUIUntilWorldValid) { try { this.mc.currentScreen.drawScreen(mouseX, mouseY, renderPartialTicks); } catch (Throwable var13) { CrashReport var11 = CrashReport.makeCrashReport(var13, "Rendering screen"); throw new ReportedException(var11); } GL11.glDisable(GL11.GL_LIGHTING); //inventory messes up fog color sometimes... This fixes GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); drawMouseQuad(mouseX, mouseY); } //Setup render target if (mc.vrSettings.useDistortion) { preDistortionFBO.bindRenderTarget(); } else if (this.mc.vrSettings.useSupersample) { postDistortionFBO.bindRenderTarget(); eyeRenderParams._renderScale = 1.0f; } else { unbindFBORenderTarget(); eyeRenderParams._renderScale = 1.0f; } GL11.glClearColor(0, 0, 0, 1); GL11.glEnable(GL11.GL_SCISSOR_TEST); if (this.mc.theWorld != null) { //If we're in-game, render in-game stuff this.mc.mcProfiler.startSection("level"); if (this.mc.renderViewEntity == null) { this.mc.renderViewEntity = this.mc.thePlayer; } EntityLivingBase renderViewEntity = this.mc.renderViewEntity; this.mc.mcProfiler.endStartSection("center"); //Used by fog comparison, 3rd person camera/block collision detection renderOriginX = renderViewEntity.lastTickPosX + (renderViewEntity.posX - renderViewEntity.lastTickPosX) * (double) renderPartialTicks; renderOriginY = renderViewEntity.lastTickPosY + (renderViewEntity.posY - renderViewEntity.lastTickPosY) * (double) renderPartialTicks; renderOriginZ = renderViewEntity.lastTickPosZ + (renderViewEntity.posZ - renderViewEntity.lastTickPosZ) * (double) renderPartialTicks; if (this.mc.currentScreen == null) { this.mc.mcProfiler.endStartSection("pick"); getPointedBlock(renderPartialTicks); } // Update sound engine setSoundListenerOrientation(); } //Update gui Yaw if (guiShowingThisFrame && !guiShowingLastFrame) { guiHeadYaw = this.cameraYaw - this.mc.lookaimController.getBodyYawDegrees(); } guiShowingLastFrame = guiShowingThisFrame; //Now, actually render world for (int renderSceneNumber = 0; renderSceneNumber < 2; ++renderSceneNumber) { setupEyeViewport(renderSceneNumber); this.mc.mcProfiler.endStartSection("camera"); //transform camera with pitch,yaw,roll + neck model + game effects setupCameraTransform(renderPartialTicks, renderSceneNumber); if (this.mc.theWorld != null) { GL11.glMatrixMode(GL11.GL_MODELVIEW); GL11.glPushMatrix(); this.renderWorld(renderPartialTicks, 0L, renderSceneNumber); this.disableLightmap(renderPartialTicks); GL11.glMatrixMode(GL11.GL_MODELVIEW); GL11.glPopMatrix(); } else { GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT); // Clear Screen And Depth Buffer on the framebuffer to black GL11.glDisable(GL11.GL_BLEND); } if (guiShowingThisFrame) { GL11.glPushMatrix(); GL11.glEnable(GL11.GL_TEXTURE_2D); guiFBO.bindTexture(); // Prevent black border at top / bottom of GUI GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, GL12.GL_CLAMP_TO_EDGE); GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL12.GL_CLAMP_TO_EDGE); if (this.mc.theWorld != null && this.mc.vrSettings.hudLockToHead) { GL11.glLoadIdentity(); if (renderSceneNumber == 0) GL11.glMultMatrix(eyeRenderParams.gl_getLeftViewportTransform()); else GL11.glMultMatrix(eyeRenderParams.gl_getRightViewportTransform()); GL11.glRotatef(180f - this.mc.vrSettings.hudYawOffset, 0f, 1f, 0f); GL11.glRotatef(-this.mc.vrSettings.hudPitchOffset, 1f, 0f, 0f); // GL11.glRotatef(cameraRoll, 0f, 0f, 1f); GL11.glTranslatef(0.0f, 0.0f, this.mc.vrSettings.hudDistance - this.mc.vrSettings.eyeProtrusion); GL11.glRotatef(180f, 0f, 1f, 0f);//Not sure why this is necessary... normals/backface culling maybe? } else { float guiYaw = 0f; if (this.mc.theWorld != null) { if (this.mc.vrSettings.lookMoveDecoupled) guiYaw = this.mc.lookaimController.getBodyYawDegrees(); else guiYaw = guiHeadYaw + this.mc.lookaimController.getBodyYawDegrees(); guiYaw -= this.mc.vrSettings.hudYawOffset; } else guiYaw = guiHeadYaw + this.mc.lookaimController.getBodyYawDegrees(); GL11.glRotatef(-guiYaw, 0f, 1f, 0f); float guiPitch = 0f; if (this.mc.theWorld != null) guiPitch = -this.mc.vrSettings.hudPitchOffset; // if( this.mc.vrSettings.allowMousePitchInput) // guiPitch += this.mc.lookaimController.getBodyPitchDegrees(); GL11.glRotatef(guiPitch, 1f, 0f, 0f); GL11.glTranslatef(0.0f, 0.0f, this.mc.vrSettings.hudDistance); GL11.glRotatef(180f, 0f, 1f, 0f);//Not sure why this is necessary... normals/backface culling maybe? } GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); if (this.mc.theWorld != null) GL11.glColor4f(1, 1, 1, this.mc.vrSettings.hudOpacity); else GL11.glColor4f(1, 1, 1, 1); if (!this.mc.vrSettings.hudOcclusion) GL11.glDisable(GL11.GL_DEPTH_TEST); drawQuad2(this.mc.displayWidth, this.mc.displayHeight, this.mc.vrSettings.hudScale * this.mc.vrSettings.hudDistance); GL11.glDisable(GL11.GL_BLEND); GL11.glEnable(GL11.GL_DEPTH_TEST); GL11.glPopMatrix(); unbindTexture(); //mc.checkGLError("GUI"); } if (calibrationHelper != null) { float x = lookX * mc.vrSettings.hudDistance; float y = lookY * mc.vrSettings.hudDistance; float z = lookZ * mc.vrSettings.hudDistance; GL11.glDisable(GL11.GL_DEPTH_TEST); GL11.glPushMatrix(); GL11.glTranslatef(x, y, z); GL11.glRotatef(-this.cameraYaw, 0.0F, 1.0F, 0.0F); GL11.glRotatef(this.cameraPitch, 1.0F, 0.0F, 0.0F); GL11.glRotatef(this.cameraRoll, 0.0F, 0.0F, 1.0F); float textScale = (float) Math.sqrt((x * x + y * y + z * z)); GL11.glScalef(-INITIAL_CALIBRATION_TEXT_SCALE * textScale, -INITIAL_CALIBRATION_TEXT_SCALE * textScale, -INITIAL_CALIBRATION_TEXT_SCALE * textScale); String calibrating = "Calibrating " + calibrationHelper.currentPlugin.getName() + "..."; mc.fontRenderer.drawStringWithShadow(calibrating, -mc.fontRenderer.getStringWidth(calibrating) / 2, -8, /*white*/16777215); String calibrationStep = calibrationHelper.calibrationStep; // mc.fontRenderer.drawStringWithShadow(calibrationStep, -mc.fontRenderer.getStringWidth(calibrationStep)/2, 8, /*white*/16777215); int column = 8; ArrayList<String> wrapped = new ArrayList<String>(); Utils.wordWrap(calibrationStep, CALIBRATION_TEXT_WORDWRAP_LEN, wrapped); for (String line : wrapped) { mc.fontRenderer.drawStringWithShadow(line, -mc.fontRenderer.getStringWidth(line) / 2, column, /*white*/16777215); column += 16; } GL11.glPopMatrix(); GL11.glEnable(GL11.GL_DEPTH_TEST); } } GL11.glDisable(GL11.GL_SCISSOR_TEST); doDistortionAndSuperSample(); checkLatencyTester(); // Finish frame GL11.glFinish(); // Get end frame timings endFrameTimeNanos = startVSyncPeriodNanos = System.nanoTime(); long frameTime = endFrameTimeNanos - startFrameRenderNanos; addRenderFrameTimeNanos(frameTime); mc.checkGLError("After render world and GUI"); }
From source file:com.mtbs3d.minecrift.VRRenderer.java
License:LGPL
public void renderWorld(float renderPartialTicks, long nextFrameTime, int renderSceneNumber) { RenderGlobal renderGlobal = this.mc.renderGlobal; EffectRenderer effectRenderer = this.mc.effectRenderer; EntityLivingBase renderViewEntity = this.mc.renderViewEntity; //TODO: fog color isn't quite right yet when eyes split water/air this.updateFogColor(renderPartialTicks); GL11.glClearColor(fogColorRed, fogColorGreen, fogColorBlue, 0.5f); GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_DEPTH_BUFFER_BIT); GL11.glEnable(GL11.GL_CULL_FACE);/* w ww .j a v a2s . c o m*/ GL11.glEnable(GL11.GL_DEPTH_TEST); //mc.checkGLError("FBO init"); this.mc.mcProfiler.startSection("lightTex"); if (this.lightmapUpdateNeeded) { this.updateLightmap(renderPartialTicks); } ActiveRenderInfo.updateRenderInfo(this.mc.thePlayer, this.mc.gameSettings.thirdPersonView == 2); this.mc.mcProfiler.endStartSection("frustrum"); ClippingHelperImpl.getInstance(); // setup clip, using current modelview / projection matrices if (!Config.isSkyEnabled() && !Config.isSunMoonEnabled() && !Config.isStarsEnabled()) { GL11.glDisable(GL11.GL_BLEND); } else { this.setupFog(-1, renderPartialTicks); this.mc.mcProfiler.endStartSection("sky"); renderGlobal.renderSky(renderPartialTicks); } GL11.glEnable(GL11.GL_FOG); this.setupFog(1, renderPartialTicks); if (this.mc.gameSettings.ambientOcclusion != 0) { GL11.glShadeModel(GL11.GL_SMOOTH); } this.mc.mcProfiler.endStartSection("culling"); Frustrum frustrum = new Frustrum(); frustrum.setPosition(renderOriginX, renderOriginY, renderOriginZ); this.mc.renderGlobal.clipRenderersByFrustum(frustrum, renderPartialTicks); if (renderSceneNumber == 0) { this.mc.mcProfiler.endStartSection("updatechunks"); while (!this.mc.renderGlobal.updateRenderers(renderViewEntity, false) && nextFrameTime != 0L) { long var15 = nextFrameTime - System.nanoTime(); if (var15 < 0L || var15 > 1000000000L) { break; } } } if (renderViewEntity.posY < 128.0D) { this.renderCloudsCheck(renderGlobal, renderPartialTicks); } this.mc.mcProfiler.endStartSection("prepareterrain"); this.setupFog(0, renderPartialTicks); GL11.glEnable(GL11.GL_FOG); this.mc.getTextureManager().bindTexture(TextureMap.locationBlocksTexture); RenderHelper.disableStandardItemLighting(); this.mc.mcProfiler.endStartSection("terrain"); renderGlobal.sortAndRender(renderViewEntity, 0, (double) renderPartialTicks); GL11.glShadeModel(GL11.GL_FLAT); boolean var16 = Reflector.ForgeHooksClient.exists(); EntityPlayer var18; if (this.debugViewDirection == 0) { RenderHelper.enableStandardItemLighting(); this.mc.mcProfiler.endStartSection("entities"); if (var16) { Reflector.callVoid(Reflector.ForgeHooksClient_setRenderPass, new Object[] { Integer.valueOf(0) }); } //TODO: multiple render passes for entities? renderGlobal.renderEntities(renderViewEntity.getPosition(renderPartialTicks), frustrum, renderPartialTicks); if (var16) { Reflector.callVoid(Reflector.ForgeHooksClient_setRenderPass, new Object[] { Integer.valueOf(-1) }); } RenderHelper.disableStandardItemLighting(); } GL11.glDisable(GL11.GL_BLEND); GL11.glEnable(GL11.GL_CULL_FACE); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); GL11.glDepthMask(true); this.setupFog(0, renderPartialTicks); GL11.glEnable(GL11.GL_BLEND); GL11.glDisable(GL11.GL_CULL_FACE); this.mc.getTextureManager().bindTexture(TextureMap.locationBlocksTexture); WrUpdates.resumeBackgroundUpdates(); if (Config.isWaterFancy()) { this.mc.mcProfiler.endStartSection("water"); if (this.mc.gameSettings.ambientOcclusion != 0) { GL11.glShadeModel(GL11.GL_SMOOTH); } GL11.glColorMask(false, false, false, false); int var17 = renderGlobal.renderAllSortedRenderers(1, (double) renderPartialTicks); if (this.mc.gameSettings.anaglyph) { if (anaglyphField == 0) { GL11.glColorMask(false, true, true, true); } else { GL11.glColorMask(true, false, false, true); } } else { GL11.glColorMask(true, true, true, true); } if (var17 > 0) { renderGlobal.renderAllSortedRenderers(1, (double) renderPartialTicks); } GL11.glShadeModel(GL11.GL_FLAT); } else { this.mc.mcProfiler.endStartSection("water"); renderGlobal.renderAllSortedRenderers(1, (double) renderPartialTicks); } WrUpdates.pauseBackgroundUpdates(); if (var16 && this.debugViewDirection == 0) { RenderHelper.enableStandardItemLighting(); this.mc.mcProfiler.endStartSection("entities"); Reflector.callVoid(Reflector.ForgeHooksClient_setRenderPass, new Object[] { Integer.valueOf(1) }); this.mc.renderGlobal.renderEntities(renderViewEntity.getPosition(renderPartialTicks), frustrum, renderPartialTicks); Reflector.callVoid(Reflector.ForgeHooksClient_setRenderPass, new Object[] { Integer.valueOf(-1) }); RenderHelper.disableStandardItemLighting(); } GL11.glDepthMask(true); GL11.glEnable(GL11.GL_CULL_FACE); GL11.glDisable(GL11.GL_BLEND); boolean renderOutline = this.mc.vrSettings.alwaysRenderBlockOutline || !this.mc.gameSettings.hideGUI; if (this.mc.currentScreen == null && this.cameraZoom == 1.0D && renderViewEntity instanceof EntityPlayer && this.mc.objectMouseOver != null && !renderViewEntity.isInsideOfMaterial(Material.water) && renderOutline) { var18 = (EntityPlayer) renderViewEntity; GL11.glDisable(GL11.GL_ALPHA_TEST); this.mc.mcProfiler.endStartSection("outline"); if (!var16 || !Reflector.callBoolean(Reflector.ForgeHooksClient_onDrawBlockHighlight, new Object[] { renderGlobal, var18, this.mc.objectMouseOver, Integer.valueOf(0), var18.inventory.getCurrentItem(), Float.valueOf(renderPartialTicks) })) { renderGlobal.drawSelectionBox(var18, this.mc.objectMouseOver, 0, renderPartialTicks); } GL11.glEnable(GL11.GL_ALPHA_TEST); } if (this.mc.currentScreen == null && this.cameraZoom == 1.0D && renderViewEntity instanceof EntityPlayer && !renderViewEntity.isInsideOfMaterial(Material.water) && renderOutline && this.mc.vrSettings.showEntityOutline) { var18 = (EntityPlayer) renderViewEntity; if (var18 != null) { GL11.glDisable(GL11.GL_ALPHA_TEST); this.mc.mcProfiler.endStartSection("entityOutline"); if (this.bb != null) drawBoundingBox(var18, this.bb, renderPartialTicks); GL11.glEnable(GL11.GL_ALPHA_TEST); } } this.mc.mcProfiler.endStartSection("destroyProgress"); GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); renderGlobal.drawBlockDamageTexture(Tessellator.instance, renderViewEntity, renderPartialTicks); GL11.glDisable(GL11.GL_BLEND); this.mc.mcProfiler.endStartSection("weather"); this.renderRainSnow(renderPartialTicks); GL11.glDisable(GL11.GL_FOG); if (renderViewEntity.posY >= 128.0D) { this.renderCloudsCheck(renderGlobal, renderPartialTicks); } this.enableLightmap((double) renderPartialTicks); this.mc.mcProfiler.endStartSection("litParticles"); RenderHelper.enableStandardItemLighting(); effectRenderer.renderLitParticles(renderViewEntity, renderPartialTicks); RenderHelper.disableStandardItemLighting(); this.setupFog(0, renderPartialTicks); this.mc.mcProfiler.endStartSection("particles"); effectRenderer.renderParticles(renderViewEntity, renderPartialTicks); this.disableLightmap((double) renderPartialTicks); if (var16) { this.mc.mcProfiler.endStartSection("FRenderLast"); Reflector.callVoid(Reflector.ForgeHooksClient_dispatchRenderLast, new Object[] { renderGlobal, Float.valueOf(renderPartialTicks) }); } if (this.mc.vrSettings.renderFullFirstPersonModel == false) { GL11.glClear(GL11.GL_DEPTH_BUFFER_BIT); this.renderHand(renderPartialTicks, renderSceneNumber); } GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f); //white crosshair, with blending //Draw crosshair boolean renderCrosshair = this.mc.vrSettings.alwaysRenderInGameCrosshair || !this.mc.gameSettings.hideGUI; if (this.mc.currentScreen == null && this.mc.gameSettings.thirdPersonView == 0 && renderCrosshair) { this.mc.mcProfiler.endStartSection("crosshair"); float crossDepth = (float) Math.sqrt((crossX * crossX + crossY * crossY + crossZ * crossZ)); float scale = 0.025f * crossDepth * this.mc.vrSettings.crosshairScale; GL11.glPushMatrix(); GL11.glTranslatef(crossX, crossY, crossZ); GL11.glRotatef(-this.aimYaw, 0.0F, 1.0F, 0.0F); GL11.glRotatef(this.aimPitch, 1.0F, 0.0F, 0.0F); if (this.mc.vrSettings.crosshairRollsWithHead) GL11.glRotatef(this.cameraRoll, 0.0F, 0.0F, 1.0F); GL11.glScalef(-scale, -scale, scale); GL11.glDisable(GL11.GL_LIGHTING); GL11.glDisable(GL11.GL_DEPTH_TEST); GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_ONE_MINUS_DST_COLOR, GL11.GL_ONE_MINUS_SRC_COLOR); this.mc.getTextureManager().bindTexture(Gui.icons); float var7 = 0.00390625F; float var8 = 0.00390625F; Tessellator.instance.startDrawingQuads(); Tessellator.instance.addVertexWithUV(-1, +1, 0, 0, 16 * var8); Tessellator.instance.addVertexWithUV(+1, +1, 0, 16 * var7, 16 * var8); Tessellator.instance.addVertexWithUV(+1, -1, 0, 16 * var7, 0); Tessellator.instance.addVertexWithUV(-1, -1, 0, 0, 0); Tessellator.instance.draw(); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); GL11.glDisable(GL11.GL_BLEND); GL11.glEnable(GL11.GL_DEPTH_TEST); GL11.glPopMatrix(); //mc.checkGLError("crosshair"); } this.mc.mcProfiler.endSection(); }
From source file:com.owens.oobjloader.Main.java
License:BSD License
/** * Runs the program (the "main loop")// w ww . ja v a 2 s.c om */ private static void run(String filename, String defaultTextureMaterial) { DisplayModel scene = null; scene = new DisplayModel(); log.log(INFO, "Parsing WaveFront OBJ file"); Build builder = new Build(); Parse obj = null; try { obj = new Parse(builder, filename); } catch (java.io.FileNotFoundException e) { log.log(SEVERE, "Exception loading object! e=" + e); e.printStackTrace(); } catch (java.io.IOException e) { log.log(SEVERE, "Exception loading object! e=" + e); e.printStackTrace(); } log.log(INFO, "Done parsing WaveFront OBJ file"); log.log(INFO, "Splitting OBJ file faces into list of faces per material"); ArrayList<ArrayList<Face>> facesByTextureList = createFaceListsByMaterial(builder); log.log(INFO, "Done splitting OBJ file faces into list of faces per material, ended up with " + facesByTextureList.size() + " lists of faces."); TextureLoader textureLoader = new TextureLoader(); int defaultTextureID = 0; if (defaultTextureMaterial != null) { log.log(INFO, "Loading default texture =" + defaultTextureMaterial); defaultTextureID = setUpDefaultTexture(textureLoader, defaultTextureMaterial); log.log(INFO, "Done loading default texture =" + defaultTextureMaterial); } if (defaultTextureID == -1) { BufferedImage img = new BufferedImage(256, 256, BufferedImage.TYPE_INT_ARGB); Graphics g = img.getGraphics(); g.setColor(Color.BLUE); g.fillRect(0, 0, 256, 256); g.setColor(Color.RED); for (int loop = 0; loop < 256; loop++) { g.drawLine(loop, 0, loop, 255); g.drawLine(0, loop, 255, loop); } defaultTextureID = textureLoader.convertToTexture(img); } int currentTextureID = -1; for (ArrayList<Face> faceList : facesByTextureList) { if (faceList.isEmpty()) { log.log(INFO, "ERROR: got an empty face list. That shouldn't be possible."); continue; } log.log(INFO, "Getting material " + faceList.get(0).material); currentTextureID = getMaterialID(faceList.get(0).material, defaultTextureID, builder, textureLoader); log.log(INFO, "Splitting any quads and throwing any faces with > 4 vertices."); ArrayList<Face> triangleList = splitQuads(faceList); log.log(INFO, "Calculating any missing vertex normals."); calcMissingVertexNormals(triangleList); log.log(INFO, "Ready to build VBO of " + triangleList.size() + " triangles"); ; if (triangleList.size() <= 0) { continue; } log.log(INFO, "Building VBO"); VBO vbo = VBOFactory.build(currentTextureID, triangleList); log.log(INFO, "Adding VBO with text id " + currentTextureID + ", with " + triangleList.size() + " triangles to scene."); scene.addVBO(vbo); } log.log(INFO, "Finally ready to draw things."); GL11.glEnable(GL11.GL_CULL_FACE); GL11.glEnable(GL11.GL_LIGHTING); GL11.glEnable(GL11.GL_LIGHT0); GL11.glEnable(GL11.GL_LIGHT1); float lightAmbient[] = { 1.0f, 1.0f, 1.0f, 1.0f }; float lightDiffuse[] = { 0.5f, 0.5f, 1.0f, 1.0f }; float lightSpecular[] = { 0.0f, 1.0f, 1.0f, 0.0f }; GL11.glLight(GL11.GL_LIGHT0, GL11.GL_AMBIENT, asFloatBuffer(lightAmbient)); GL11.glLight(GL11.GL_LIGHT0, GL11.GL_DIFFUSE, asFloatBuffer(lightDiffuse)); GL11.glLight(GL11.GL_LIGHT0, GL11.GL_SPECULAR, asFloatBuffer(lightSpecular)); GL11.glLight(GL11.GL_LIGHT1, GL11.GL_AMBIENT, asFloatBuffer(lightAmbient)); GL11.glLight(GL11.GL_LIGHT1, GL11.GL_DIFFUSE, asFloatBuffer(lightDiffuse)); GL11.glLight(GL11.GL_LIGHT1, GL11.GL_SPECULAR, asFloatBuffer(lightSpecular)); float lightPosition0[] = { posix, posiy, posiz, 1.0f }; GL11.glLight(GL11.GL_LIGHT0, GL11.GL_POSITION, asFloatBuffer(lightPosition0)); float lightPosition1[] = { posix, posiy, posizz, 1.0f }; GL11.glLight(GL11.GL_LIGHT0, GL11.GL_POSITION, asFloatBuffer(lightPosition1)); while (!finished) { GL11.glMatrixMode(GL11.GL_MODELVIEW); GL11.glLoadIdentity(); GLU.gluLookAt(orix, oriy, oriz, cenx, ceny, cenz, 0, 1, 0); // rotate(based on camera) GL11.glRotatef(rotateSee, 0, 1, 0); GL11.glRotatef(rotateSeeAnother, 1, 0, 0); // transform GL11.glTranslated(0, -0.75, -2); // rotate(based on model) GL11.glRotatef(rotate, 0, 1, 0); GL11.glRotatef(rotateAnother, 1, 0, 0); // Always call Window.update(), all the time - it does some behind the // scenes work, and also displays the rendered output Display.update(); // Check for close requests if (Display.isCloseRequested()) { finished = true; } // The window is in the foreground, so render! else if (Display.isActive()) { logic(); GL11.glClear(GL11.GL_COLOR_BUFFER_BIT | GL11.GL_STENCIL_BUFFER_BIT); scene.render(); Display.sync(FRAMERATE); } // The window is not in the foreground, so we can allow other stuff to run and infrequently update else { try { Thread.sleep(100); } catch (InterruptedException e) { } logic(); // Only bother rendering if the window is visible or dirty if (Display.isVisible() || Display.isDirty()) { System.err.print("."); scene.render(); } } } }
From source file:com.pahimar.ee3.client.renderer.item.ItemAlchemicalChestRenderer.java
License:LGPL
private void renderAlchemicalChest(float x, float y, float z) { FMLClientHandler.instance().getClient().renderEngine.bindTexture(Textures.MODEL_ALCHEMICAL_CHEST); GL11.glPushMatrix(); //start GL11.glTranslatef(x, y, z); //size GL11.glRotatef(180, 1, 0, 0); GL11.glRotatef(-90, 0, 1, 0);/*from w w w .ja v a 2 s .com*/ modelChest.renderAll(); GL11.glPopMatrix(); //end }
From source file:com.pahimar.ee3.client.renderer.item.ItemAlchemyTableRenderer.java
License:LGPL
private void renderAlchemyTable(float x, float y, float z, float scale) { GL11.glPushMatrix();/* w w w.j a v a 2 s . com*/ GL11.glDisable(GL11.GL_LIGHTING); // Scale, Translate, Rotate GL11.glScalef(scale, scale, scale); GL11.glTranslatef(x, y, z); GL11.glRotatef(-90F, 1F, 0, 0); // Bind texture FMLClientHandler.instance().getClient().renderEngine.bindTexture(Textures.MODEL_ALCHEMY_TABLE); // Render modelAlchemyTable.render(); GL11.glEnable(GL11.GL_LIGHTING); GL11.glPopMatrix(); }
From source file:com.pahimar.ee3.client.renderer.item.ItemAludelRenderer.java
License:LGPL
private void renderAludel(float x, float y, float z, float scale) { GL11.glPushMatrix();// w w w . j a v a 2s .com GL11.glDisable(GL11.GL_LIGHTING); // Scale, Translate, Rotate GL11.glScalef(scale, scale, scale); GL11.glTranslatef(x, y, z); GL11.glRotatef(-90F, 1F, 0, 0); // Bind texture FMLClientHandler.instance().getClient().renderEngine.bindTexture(Textures.MODEL_ALUDEL); // Render modelAludel.render(); GL11.glEnable(GL11.GL_LIGHTING); GL11.glPopMatrix(); }
From source file:com.pahimar.ee3.client.renderer.item.ItemCalcinatorRenderer.java
License:LGPL
private void renderCalcinator(float x, float y, float z, float scale) { GL11.glPushMatrix();//w w w .j ava 2s. com GL11.glDisable(GL11.GL_LIGHTING); // Scale, Translate, Rotate GL11.glScalef(scale, scale, scale); GL11.glTranslatef(x, y, z); GL11.glRotatef(-90F, 1F, 0, 0); // Bind texture FMLClientHandler.instance().getClient().renderEngine.bindTexture(Textures.MODEL_CALCINATOR); // Render modelCalcinator.render(); GL11.glEnable(GL11.GL_LIGHTING); GL11.glPopMatrix(); }