public static void glBlendFunc(int sFactorRGB, int dFactorRGB, int sfactorAlpha, int dfactorAlpha) { if (openGL14) { if (extBlendFuncSeparate) { EXTBlendFuncSeparate.glBlendFuncSeparateEXT(sFactorRGB, dFactorRGB, sfactorAlpha, dfactorAlpha); } else { GL14.glBlendFuncSeparate(sFactorRGB, dFactorRGB, sfactorAlpha, dfactorAlpha); } } else { GL11.glBlendFunc(sFactorRGB, dFactorRGB); } }
public static void allocateTextureImpl(int p_180600_0_, int p_180600_1_, int p_180600_2_, int p_180600_3_) { deleteTexture(p_180600_0_); bindTexture(p_180600_0_); if (p_180600_1_ >= 0) { GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL12.GL_TEXTURE_MAX_LEVEL, p_180600_1_); GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL12.GL_TEXTURE_MIN_LOD, 0.0F); GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL12.GL_TEXTURE_MAX_LOD, (float)p_180600_1_); GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL14.GL_TEXTURE_LOD_BIAS, 0.0F); } for (int i = 0; i <= p_180600_1_; ++i) { GL11.glTexImage2D(GL11.GL_TEXTURE_2D, i, GL11.GL_RGBA, p_180600_2_ >> i, p_180600_3_ >> i, 0, GL12.GL_BGRA, GL12.GL_UNSIGNED_INT_8_8_8_8_REV, (IntBuffer)((IntBuffer)null)); } }
private static int getInternalTextureFormat(Bitmap.Format format) { switch (format) { case GRAYSCALE: return GL11.GL_LUMINANCE; case GRAYSCALEALPHA: return GL11.GL_LUMINANCE_ALPHA; case RGB: return GL21.GL_SRGB; case RGBA: return GL21.GL_SRGB_ALPHA; case DEPTH: return GL14.GL_DEPTH_COMPONENT16; default: throw new UnsupportedOperationException("Unrecognized bitmap format!"); } }
@Override public void renderParticle(Tessellator t, float par2, float par3, float par4, float par5, float par6, float par7) { Minecraft.getMinecraft().renderEngine.bindTexture(RivalRebels.etflameball); GL14.glBlendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ZERO); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE); GL14.glBlendEquation(GL14.GL_FUNC_ADD); float f10 = 0.03F * particleScale; float f11 = (float) (prevPosX + (posX - prevPosX) * par2 - interpPosX); float f12 = (float) (prevPosY + (posY - prevPosY) * par2 - interpPosY); float f13 = (float) (prevPosZ + (posZ - prevPosZ) * par2 - interpPosZ); t.setColorRGBA_F(1, 1, 1, 1); float X = (sequence % 4) / 4f; float Y = (sequence - (sequence % 4)) / 16f; t.addVertexWithUV(f11 - par3 * f10 - par6 * f10, f12 - par4 * f10, f13 - par5 * f10 - par7 * f10, X + 0.25f, Y + 0.25f); t.addVertexWithUV(f11 - par3 * f10 + par6 * f10, f12 + par4 * f10, f13 - par5 * f10 + par7 * f10, X + 0.25f, Y); t.addVertexWithUV(f11 + par3 * f10 + par6 * f10, f12 + par4 * f10, f13 + par5 * f10 + par7 * f10, X, Y); t.addVertexWithUV(f11 + par3 * f10 - par6 * f10, f12 - par4 * f10, f13 + par5 * f10 - par7 * f10, X, Y + 0.25f); }
private OpenGlState() { this.enableBlend = isSet(GL11.GL_BLEND); this.blendSource = getInteger(GL11.GL_BLEND_SRC); this.blendDest = getInteger(GL11.GL_BLEND_DST); this.blendEquation = getInteger(GL14.GL_BLEND_EQUATION); this.enableAlphaTest = isSet(GL11.GL_ALPHA_TEST); this.alphaTestFunc = getInteger(GL11.GL_ALPHA_TEST_FUNC); this.alphaTestRef = getFloat(GL11.GL_ALPHA_TEST_REF); this.depthTest = isSet(GL11.GL_DEPTH_TEST); this.depthFunc = getInteger(GL11.GL_DEPTH_FUNC); this.lighting = isSet(GL11.GL_LIGHTING); this.depthMask = isSet(GL11.GL_DEPTH_WRITEMASK); this.normal = isSet(GL11.GL_NORMALIZE); this.rescaleNormal = isSet(GL12.GL_RESCALE_NORMAL); GlStateManager.pushMatrix(); }
/** * Initialize layer FBO to receive GL primitives from a set of identical * symbolizers * * @param primitive * @param opacity * @param currentSymbolizer * @throws GLException */ private void clearFBOLayer() throws GLException { GLTools.glCheckError("preparing next FBO Layer"); GL30.glBindFramebuffer(GL30.GL_DRAW_FRAMEBUFFER, this.getLayerViewPanel().getGLCanvas().getFboId()); GL11.glDrawBuffer(GL30.GL_COLOR_ATTACHMENT0); GLTools.glCheckError("bind frame buffer"); // Blending mode in FBO drawing. GLTools.glCheckError("finalizing FBO initialization"); GL11.glClearColor(0f, 0f, 0f, 0f); GLTools.glCheckError("finalizing FBO initialization"); GL11.glClear(GL11.GL_COLOR_BUFFER_BIT); GLTools.glCheckError("finalizing FBO initialization"); glEnable(GL11.GL_BLEND); GLTools.glCheckError("finalizing FBO initialization"); GL20.glBlendEquationSeparate(GL14.GL_FUNC_ADD, GL14.GL_MAX); GLTools.glCheckError("finalizing FBO initialization"); GL14.glBlendFuncSeparate(GL11.GL_ONE, GL11.GL_ZERO, GL11.GL_ZERO, GL11.GL_ZERO); GL30.glBindFramebuffer(GL30.GL_DRAW_FRAMEBUFFER, 0); GLTools.glCheckError("finalizing FBO initialization"); }
public static void loadTextureMipmap(int tex, int[] rgb, int width, int height) { IntBuffer rgbBuf = BufferUtils.createIntBuffer(rgb.length); rgbBuf.put(rgb); rgbBuf.flip(); bind(tex); //If OpenGL30, use glGenerateMipmap, else use the GL_GENERATE_MIPMAP tex param if (RenderUtil.GL_30) { GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL11.GL_RGBA8, width, height, 0, GL12.GL_BGRA, GL12.GL_UNSIGNED_INT_8_8_8_8_REV, rgbBuf); GL30.glGenerateMipmap(GL11.GL_TEXTURE_2D); } else { GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL14.GL_GENERATE_MIPMAP, GL11.GL_TRUE); GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL11.GL_RGBA8, width, height, 0, GL12.GL_BGRA, GL12.GL_UNSIGNED_INT_8_8_8_8_REV, rgbBuf); } }
private void allocateFrameBuffer() { if (this.framebuffer != 0) return; this.framebuffer = EXTFramebufferObject.glGenFramebuffersEXT(); //Release via: EXTFramebufferObject.glDeleteFramebuffersEXT(framebuffer); this.depthBuffer = EXTFramebufferObject.glGenRenderbuffersEXT(); //Release via: EXTFramebufferObject.glDeleteRenderbuffersEXT(depthBuffer); EXTFramebufferObject.glBindFramebufferEXT(EXTFramebufferObject.GL_FRAMEBUFFER_EXT, this.framebuffer); EXTFramebufferObject.glBindRenderbufferEXT(EXTFramebufferObject.GL_RENDERBUFFER_EXT, depthBuffer); if (MinecraftForgeClient.getStencilBits() == 0) EXTFramebufferObject.glRenderbufferStorageEXT(EXTFramebufferObject.GL_RENDERBUFFER_EXT, GL14.GL_DEPTH_COMPONENT24, width, height); else EXTFramebufferObject.glRenderbufferStorageEXT(EXTFramebufferObject.GL_RENDERBUFFER_EXT, org.lwjgl.opengl.EXTPackedDepthStencil.GL_DEPTH24_STENCIL8_EXT, width, height); EXTFramebufferObject.glFramebufferRenderbufferEXT(EXTFramebufferObject.GL_FRAMEBUFFER_EXT, EXTFramebufferObject.GL_DEPTH_ATTACHMENT_EXT, EXTFramebufferObject.GL_RENDERBUFFER_EXT, depthBuffer); if (MinecraftForgeClient.getStencilBits() != 0) EXTFramebufferObject.glFramebufferRenderbufferEXT(EXTFramebufferObject.GL_FRAMEBUFFER_EXT, EXTFramebufferObject.GL_STENCIL_ATTACHMENT_EXT, EXTFramebufferObject.GL_RENDERBUFFER_EXT, depthBuffer); this.texture = GL11.glGenTextures(); //Release via: GL11.glDeleteTextures(colorTexture); GL11.glBindTexture(GL11.GL_TEXTURE_2D, this.texture); GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR); GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL11.GL_RGBA8, width, height, 0, GL11.GL_RGBA, GL11.GL_INT, (java.nio.ByteBuffer) null); EXTFramebufferObject.glFramebufferTexture2DEXT(EXTFramebufferObject.GL_FRAMEBUFFER_EXT, EXTFramebufferObject.GL_COLOR_ATTACHMENT0_EXT, GL11.GL_TEXTURE_2D, this.texture, 0); EXTFramebufferObject.glBindFramebufferEXT(EXTFramebufferObject.GL_FRAMEBUFFER_EXT, 0); }
public int loadTexture(String fileName) { Texture texture = null; try { texture = TextureLoader.getTexture("PNG", new FileInputStream(MainGameLoop.fileManager.getTextureFile(fileName))); GL30.glGenerateMipmap(GL11.GL_TEXTURE_2D); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR_MIPMAP_LINEAR); GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL14.GL_TEXTURE_LOD_BIAS, 0); if (GLContext.getCapabilities().GL_EXT_texture_filter_anisotropic) { float amount = Math.min(4f, GL11.glGetFloat(EXTTextureFilterAnisotropic.GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT)); GL11.glTexParameterf(GL11.GL_TEXTURE_2D, EXTTextureFilterAnisotropic.GL_TEXTURE_MAX_ANISOTROPY_EXT, amount); } else { System.out.println("Filter Anisotropic Not Supported"); } } catch (Exception e) { e.printStackTrace(); System.err.println("Tried to load texture " + fileName + ".png , didn't work"); System.exit(-1); } textures.add(texture.getTextureID()); return texture.getTextureID(); }
public static void func_147946_a(int p_147946_0_, int p_147946_1_, int p_147946_2_, int p_147946_3_, float p_147946_4_) { deleteTexture(p_147946_0_); bindTexture(p_147946_0_); if (OpenGlHelper.anisotropicFilteringSupported) { GL11.glTexParameterf(GL11.GL_TEXTURE_2D, 34046, p_147946_4_); } if (p_147946_1_ > 0) { GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL12.GL_TEXTURE_MAX_LEVEL, p_147946_1_); GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL12.GL_TEXTURE_MIN_LOD, 0.0F); GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL12.GL_TEXTURE_MAX_LOD, (float)p_147946_1_); GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL14.GL_TEXTURE_LOD_BIAS, 0.0F); } for (int var5 = 0; var5 <= p_147946_1_; ++var5) { GL11.glTexImage2D(GL11.GL_TEXTURE_2D, var5, GL11.GL_RGBA, p_147946_2_ >> var5, p_147946_3_ >> var5, 0, GL12.GL_BGRA, GL12.GL_UNSIGNED_INT_8_8_8_8_REV, (IntBuffer)null); } }
/** * Reads the first row of the slider gradient texture and upload it as * a 1D texture to OpenGL if it hasn't already been done. */ public void initGradient() { if (gradientTexture == 0) { Image slider = GameImage.SLIDER_GRADIENT.getImage().getScaledCopy(1.0f / GameImage.getUIscale()); staticState.gradientTexture = GL11.glGenTextures(); ByteBuffer buff = BufferUtils.createByteBuffer(slider.getWidth() * 4); for (int i = 0; i < slider.getWidth(); ++i) { Color col = slider.getColor(i, 0); buff.put((byte) (255 * col.r)); buff.put((byte) (255 * col.g)); buff.put((byte) (255 * col.b)); buff.put((byte) (255 * col.a)); } buff.flip(); GL11.glBindTexture(GL11.GL_TEXTURE_1D, gradientTexture); GL11.glTexImage1D(GL11.GL_TEXTURE_1D, 0, GL11.GL_RGBA, slider.getWidth(), 0, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, buff); ContextCapabilities capabilities = GLContext.getCapabilities(); if (capabilities.OpenGL30) { GL30.glGenerateMipmap(GL11.GL_TEXTURE_1D); } else if (capabilities.GL_EXT_framebuffer_object) { EXTFramebufferObject.glGenerateMipmapEXT(GL11.GL_TEXTURE_1D); } else { GL11.glTexParameteri(GL11.GL_TEXTURE_1D, GL14.GL_GENERATE_MIPMAP, GL11.GL_TRUE); } } }
public static void glBlendFunc(int p_148821_0_, int p_148821_1_, int p_148821_2_, int p_148821_3_) { if (openGL14) { if (field_153211_u) { EXTBlendFuncSeparate.glBlendFuncSeparateEXT(p_148821_0_, p_148821_1_, p_148821_2_, p_148821_3_); } else { GL14.glBlendFuncSeparate(p_148821_0_, p_148821_1_, p_148821_2_, p_148821_3_); } } else { GL11.glBlendFunc(p_148821_0_, p_148821_1_); } }
public static void allocateTextureImpl(int p_147946_0_, int p_147946_1_, int p_147946_2_, int p_147946_3_, float p_147946_4_) { deleteTexture(p_147946_0_); bindTexture(p_147946_0_); if (OpenGlHelper.anisotropicFilteringSupported) { GL11.glTexParameterf(GL11.GL_TEXTURE_2D, 34046, p_147946_4_); } if (p_147946_1_ > 0) { GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL12.GL_TEXTURE_MAX_LEVEL, p_147946_1_); GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL12.GL_TEXTURE_MIN_LOD, 0.0F); GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL12.GL_TEXTURE_MAX_LOD, (float)p_147946_1_); GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL14.GL_TEXTURE_LOD_BIAS, 0.0F); } for (int i1 = 0; i1 <= p_147946_1_; ++i1) { GL11.glTexImage2D(GL11.GL_TEXTURE_2D, i1, GL11.GL_RGBA, p_147946_2_ >> i1, p_147946_3_ >> i1, 0, GL12.GL_BGRA, GL12.GL_UNSIGNED_INT_8_8_8_8_REV, (IntBuffer)null); } }
public void func_148109_a() { if (!this.equals(field_148118_a)) { if (field_148118_a == null || this.field_148119_h != field_148118_a.func_148111_b()) { field_148118_a = this; if (this.field_148119_h) { GlStateManager.disableBlend(); return; } GlStateManager.enableBlend(); } GL14.glBlendEquation(this.field_148112_f); if (this.field_148113_g) { GlStateManager.tryBlendFuncSeparate(this.field_148116_b, this.field_148114_d, this.field_148117_c, this.field_148115_e); } else { GlStateManager.blendFunc(this.field_148116_b, this.field_148114_d); } } }
public static void allocateTextureImpl(int p_180600_0_, int p_180600_1_, int p_180600_2_, int p_180600_3_) { Object object = TextureUtil.class; if (Reflector.SplashScreen.exists()) { object = Reflector.SplashScreen.getTargetClass(); } synchronized (object) { deleteTexture(p_180600_0_); bindTexture(p_180600_0_); } if (p_180600_1_ >= 0) { GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL12.GL_TEXTURE_MAX_LEVEL, p_180600_1_); GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL12.GL_TEXTURE_MIN_LOD, 0.0F); GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL12.GL_TEXTURE_MAX_LOD, (float)p_180600_1_); GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL14.GL_TEXTURE_LOD_BIAS, 0.0F); } for (int i = 0; i <= p_180600_1_; ++i) { GL11.glTexImage2D(GL11.GL_TEXTURE_2D, i, GL11.GL_RGBA, p_180600_2_ >> i, p_180600_3_ >> i, 0, GL12.GL_BGRA, GL12.GL_UNSIGNED_INT_8_8_8_8_REV, (IntBuffer)((IntBuffer)null)); } }
public static Texture loadTexture(String textureFile) { try { // InputStream in = TextureLoader.class.getResourceAsStream("/" + textureFile); InputStream in = Util.loadInternal(textureFile); BufferedImage image = ImageIO.read(in); int[] pixels = new int[image.getWidth() * image.getHeight()]; image.getRGB(0, 0, image.getWidth(), image.getHeight(), pixels, 0, image.getWidth()); ByteBuffer buffer = ByteBuffer.allocateDirect(image.getWidth() * image.getHeight() * 4); for(int h = 0; h < image.getHeight(); h++) { for(int w = 0; w < image.getWidth(); w++) { int pixel = pixels[h * image.getWidth() + w]; buffer.put((byte) ((pixel >> 16) & 0xFF)); buffer.put((byte) ((pixel >> 8) & 0xFF)); buffer.put((byte) (pixel & 0xFF)); buffer.put((byte) ((pixel >> 24) & 0xFF)); } } buffer.flip(); in.close(); int textureID = GL11.glGenTextures(); GL11.glBindTexture(GL11.GL_TEXTURE_2D, textureID); GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL11.GL_RGBA8, image.getWidth(), image.getHeight(), 0, GL11.GL_RGBA, GL11.GL_UNSIGNED_BYTE, buffer); GL30.glGenerateMipmap(GL11.GL_TEXTURE_2D); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR_MIPMAP_NEAREST); GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL14.GL_MAX_TEXTURE_LOD_BIAS, -1); GL11.glBindTexture(GL11.GL_TEXTURE_2D, 0); return new Texture(textureID, image.getWidth(), image.getHeight()); } catch (Exception e) { e.printStackTrace(); return null; } }
protected static int loadTextureToOpenGL(TextureData data, TextureBuilder builder) { int texID = GL11.glGenTextures(); GL13.glActiveTexture(GL13.GL_TEXTURE0); GL11.glBindTexture(GL11.GL_TEXTURE_2D, texID); GL11.glPixelStorei(GL11.GL_UNPACK_ALIGNMENT, 1); GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL11.GL_RGBA, data.getWidth(), data.getHeight(), 0, GL12.GL_BGRA, GL11.GL_UNSIGNED_BYTE, data.getBuffer()); if (builder.isMipmap()) { GL30.glGenerateMipmap(GL11.GL_TEXTURE_2D); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_LINEAR); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR_MIPMAP_LINEAR); if (builder.isAnisotropic() && GLContext.getCapabilities().GL_EXT_texture_filter_anisotropic) { GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL14.GL_TEXTURE_LOD_BIAS, 0); GL11.glTexParameterf(GL11.GL_TEXTURE_2D, EXTTextureFilterAnisotropic.GL_TEXTURE_MAX_ANISOTROPY_EXT, 4.0f); } } else if (builder.isNearest()) { GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_NEAREST); } else { GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_LINEAR); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR); } if (builder.isClampEdges()) { GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, GL12.GL_CLAMP_TO_EDGE); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL12.GL_CLAMP_TO_EDGE); } else { GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, GL11.GL_REPEAT); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL11.GL_REPEAT); } GL11.glBindTexture(GL11.GL_TEXTURE_2D, 0); return texID; }
private int createDepthTextureAttachment(int width, int height){ int texture = GL11.glGenTextures(); GL11.glBindTexture(GL11.GL_TEXTURE_2D, texture); GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL14.GL_DEPTH_COMPONENT32, width, height, 0, GL11.GL_DEPTH_COMPONENT, GL11.GL_FLOAT, (ByteBuffer) null); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_LINEAR); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR); GL32.glFramebufferTexture(GL30.GL_FRAMEBUFFER, GL30.GL_DEPTH_ATTACHMENT, texture, 0); return texture; }
public void renderItemGlow(EntityLivingBase entity, ItemStack drop, ItemCameraTransforms.TransformType transform, EnumHandSide hand, int glowColor) { // enchantments mess up the rendering ItemStack drop2 = drop.copy(); if (drop2.hasEffect()) { removeEnch(drop2.getTagCompound()); } float red = (glowColor >> 16 & 255) / 255.0F; float green = (glowColor >> 8 & 255) / 255.0F; float blue = (glowColor & 255) / 255.0F; float alpha = 0.2F; pushMatrix(); disableLighting(); GL14.glBlendColor(red, green, blue, alpha); RenderItem renderItem = Minecraft.getMinecraft().getRenderItem(); ((IRenderItem) renderItem).useTransparency(true); scale(1.1, 1.1, 1.1); translate(0, .01, .01); renderItem.renderItem(drop, entity, transform, hand == EnumHandSide.LEFT); translate(.01, -.01, -.02); renderItem.renderItem(drop, entity, transform, hand == EnumHandSide.LEFT); ((IRenderItem) renderItem).useTransparency(false); enableLighting(); popMatrix(); // I hate rendering }
private void createDepthTextureAttachment() { depthTexture = GL11.glGenTextures(); GL11.glBindTexture(GL11.GL_TEXTURE_2D, depthTexture); GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL14.GL_DEPTH_COMPONENT24, width, height, 0, GL11.GL_DEPTH_COMPONENT, GL11.GL_FLOAT, (ByteBuffer) null); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_LINEAR); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR); GL30.glFramebufferTexture2D(GL30.GL_FRAMEBUFFER, GL30.GL_DEPTH_ATTACHMENT, GL11.GL_TEXTURE_2D, depthTexture, 0); }
private int createDepthTextureAttachment(int width, int height) { int texture = GL11.glGenTextures(); GL11.glBindTexture(GL11.GL_TEXTURE_2D, texture); GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL14.GL_DEPTH_COMPONENT32, width, height, 0, GL11.GL_DEPTH_COMPONENT, GL11.GL_FLOAT, (ByteBuffer) null); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_LINEAR); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR); if (DisplayManager.hasAttribs()) GL32.glFramebufferTexture(GL30.GL_FRAMEBUFFER, GL30.GL_DEPTH_ATTACHMENT, texture, 0); return texture; }
private static int createDepthBufferAttachment(int width, int height) { int texture = GL11.glGenTextures(); GL11.glBindTexture(GL11.GL_TEXTURE_2D, texture); GL11.glTexImage2D(GL11.GL_TEXTURE_2D, 0, GL14.GL_DEPTH_COMPONENT16, width, height, 0, GL11.GL_DEPTH_COMPONENT, GL11.GL_FLOAT, (ByteBuffer) null); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_NEAREST); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_NEAREST); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, GL12.GL_CLAMP_TO_EDGE); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL12.GL_CLAMP_TO_EDGE); if (DisplayManager.hasAttribs()) GL32.glFramebufferTexture(GL30.GL_FRAMEBUFFER, GL30.GL_DEPTH_ATTACHMENT, texture, 0); return texture; }
public int loadTexture(boolean root, String directory, String file, float bias) { Texture texture = null; if (!file.toLowerCase().endsWith(".png")) file += ".png"; try { String path = directory + "/" + file; if (!root) path = "assets/" + path; texture = TextureLoader.getTexture("PNG", net.gogo98901.util.Loader.getResourceAsStream(path)); GL30.glGenerateMipmap(GL11.GL_TEXTURE_2D); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, GL11.GL_LINEAR_MIPMAP_LINEAR); GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL14.GL_TEXTURE_LOD_BIAS, bias); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, GL11.GL_LINEAR); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, GL11.GL_REPEAT); GL11.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL11.GL_REPEAT); if (directory != "fonts") { if (GLContext.getCapabilities().GL_EXT_texture_filter_anisotropic) { if (Config.anisotropic.get()) { GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL14.GL_TEXTURE_LOD_BIAS, 0F); float amount = Math.min(4F, GL11.glGetFloat(EXTTextureFilterAnisotropic.GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT)); GL11.glTexParameterf(GL11.GL_TEXTURE_2D, EXTTextureFilterAnisotropic.GL_TEXTURE_MAX_ANISOTROPY_EXT, amount); } else { Log.info("GL: Anisotropic filtering disabled by config"); } } else { Log.warn("GL: Anisotropic filtering not supported"); } } } catch (IOException e) { Log.warn("Could not read texture '" + file + "'"); Log.stackTrace(e); } textures.add(texture.getTextureID()); return texture.getTextureID(); }
public void createGL() { if (image == null || glID != -1) return; int[] pixels = ((DataBufferInt) image.getRaster().getDataBuffer()).getData(); image.getRGB(0, 0, image.getWidth(), image.getHeight(), pixels, 0, image.getWidth()); ByteBuffer buffer = BufferUtils.createByteBuffer(image.getWidth() * image.getHeight() * 4); //4 for RGBA, 3 for RGB for (int y = 0; y < image.getHeight(); y++) { for (int x = 0; x < image.getWidth(); x++) { int pixel = pixels[y * image.getWidth() + x]; buffer.put((byte) ((pixel >> 16) & 0xFF)); // Red component buffer.put((byte) ((pixel >> 8) & 0xFF)); // Green component buffer.put((byte) (pixel & 0xFF)); // Blue component buffer.put((byte) ((pixel >> 24) & 0xFF)); // Alpha component. Only for RGBA } } buffer.flip(); //FOR THE LOVE OF GOD DO NOT FORGET THIS // You now have a ByteBuffer filled with the color data of each pixel. // Now just create a texture ID and bind it. Then you can load it using // whatever OpenGL method you want, for example: glID = glGenTextures(); glBindTexture(GL_TEXTURE_2D, glID); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL12.GL_CLAMP_TO_EDGE); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL12.GL_CLAMP_TO_EDGE); //Setup texture scaling filtering glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL14.GL_GENERATE_MIPMAP, GL_TRUE); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, image.getWidth(), image.getHeight(), 0, GL_RGBA, GL_UNSIGNED_BYTE, buffer); }
public Shadow(GameCamera camera, Render render) { _camera = camera; _frameBuffer = new DepthFrameBuffer(Pixmap.Format.RGBA8888, SHADOW_MAP_SIZE, SHADOW_MAP_SIZE, true, false, true); _frameBuffer.setHasDepthTexture(true); _frameBuffer.setDepthBufferSize(GL14.GL_DEPTH_COMPONENT16); _frameBuffer.setDepthTextureFilter(Texture.TextureFilter.Nearest); _frameBuffer.setDepthTextureWrap(Texture.TextureWrap.ClampToEdge); _frameBuffer.build(); _modelBatch = new ModelBatch(new ShadowShaderProvider(render.getShadowShader())); _shadowBox = new ShadowBox(camera); }
/** * старый но! рабочий код) создания текстуры для буфера глубины. оставлен для истории */ @Deprecated public void createDepthTextre(Texture.TextureFilter filter, Texture.TextureWrap wrap) { // сначала биндим наш буфер gl.glBindFramebuffer(GL20.GL_FRAMEBUFFER, getFramebufferHandle()); // создаем текстуру _depthTexture = gl.glGenTexture(); // биндим ее gl.glBindTexture(GL11.GL_TEXTURE_2D, _depthTexture); gl.glTexImage2D( GL11.GL_TEXTURE_2D, 0, GL14.GL_DEPTH_COMPONENT16, width, height, 0, GL11.GL_DEPTH_COMPONENT, GL11.GL_FLOAT, null); // сделаем сглаживание gl.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MAG_FILTER, filter.getGLEnum()); gl.glTexParameteri(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_MIN_FILTER, filter.getGLEnum()); gl.glTexParameteri(GL11.GL_TEXTURE_2D, GL20.GL_TEXTURE_WRAP_S, wrap.getGLEnum()); gl.glTexParameteri(GL11.GL_TEXTURE_2D, GL20.GL_TEXTURE_WRAP_T, wrap.getGLEnum()); // связываем нашу текстуру с буфером gl.glFramebufferTexture2D(GL20.GL_FRAMEBUFFER, GL30.GL_DEPTH_ATTACHMENT, GL20.GL_TEXTURE_2D, _depthTexture, 0); // а вот тут может случится ата-та. т.к. надо знать ид буфера экрана. см код libgdx gl.glBindFramebuffer(GL20.GL_FRAMEBUFFER, 0); }
public void initAA(int w, int h) { // init our fbo textureW = w * x; textureH = h * x; this.w = w; this.h = h; framebufferID = glGenFramebuffers(); // create a new framebuffer colorTextureID = glGenTextures(); // and a new texture used as a color buffer depthRenderBufferID = glGenRenderbuffers(); // And finally a new depthbuffer glBindFramebuffer(GL_FRAMEBUFFER_EXT, framebufferID); // switch to the new framebuffer // initialize color texture glBindTexture(GL_TEXTURE_2D, colorTextureID); // Bind the colorbuffer texture // glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); // make it linear filterd // glTexParameteri(GL_TEXTURE_2D, // SGISGenerateMipmap.GL_GENERATE_MIPMAP_SGIS, GL_TRUE); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, textureW, textureH, 0, GL_RGBA, GL_INT, (java.nio.ByteBuffer) null); // Create the texture data ///// // glGenerateMipmap(GL_TEXTURE_2D); glFramebufferTexture2D(GL_FRAMEBUFFER_EXT,GL_COLOR_ATTACHMENT0_EXT,GL_TEXTURE_2D, colorTextureID, 0); // attach it to the framebuffer // initialize depth renderbuffer glBindRenderbuffer(GL_RENDERBUFFER_EXT, depthRenderBufferID); // bind the depth renderbuffer glRenderbufferStorage(GL_RENDERBUFFER_EXT, GL14.GL_DEPTH_COMPONENT24, textureW, textureH); // get the data space for it glFramebufferRenderbuffer(GL_FRAMEBUFFER_EXT,GL_DEPTH_ATTACHMENT_EXT,GL_RENDERBUFFER_EXT, depthRenderBufferID); // bind it to the renderbuffer glBindFramebuffer(GL_FRAMEBUFFER_EXT, 0); // Swithch back to normal framebuffer rendering }
public FrameBuffer initFBO(SomeTexture... tt) { // init our fbo if (textures != null) { for (SomeTexture texture : textures) texture.release(); } this.textures = al(tt); w = textures.car().width; h = textures.car().height; for (SomeTexture t : textures) if (t.width != w || t.height != h) BadException.die("all textures must be of same size"); framebufferID = glGenFramebuffers(); // create a new framebuffer depthRenderBufferID = glGenRenderbuffers(); // And finally a new depthbuffer glBindFramebuffer(GL_FRAMEBUFFER_EXT, framebufferID); // switch to the new framebuffer IntBuffer drawBufferParam; drawBufferParam = BufferUtils.createIntBuffer(tt.length); for (int i = 0; i < tt.length; i++) { drawBufferParam.put(GL_COLOR_ATTACHMENT0_EXT + i); glBindTexture(GL_TEXTURE_2D, tt[i].textureObjectId); glFramebufferTexture2D(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT + i, GL_TEXTURE_2D, tt[i].textureObjectId, 0); // attach texture to the framebuffer } drawBufferParam.rewind(); GL20.glDrawBuffers(drawBufferParam); // initialize depth renderbuffer glBindRenderbuffer(GL_RENDERBUFFER_EXT, depthRenderBufferID); // bind the depth renderbuffer glRenderbufferStorage(GL_RENDERBUFFER_EXT, GL14.GL_DEPTH_COMPONENT32, tt[0].width, tt[0].height); // get the data space for it glFramebufferRenderbuffer(GL_FRAMEBUFFER_EXT,GL_DEPTH_ATTACHMENT_EXT,GL_RENDERBUFFER_EXT, depthRenderBufferID); // bind it to the renderbuffer int result = glCheckFramebufferStatus(GL_FRAMEBUFFER); if (result != GL_FRAMEBUFFER_COMPLETE) BadException.die("Wrong FBO status: " + result); glBindFramebuffer(GL_FRAMEBUFFER_EXT, 0); // Swithch back to normal framebuffer rendering Util.checkGLError(); return this; }