1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
| public void create() { GL11.glPixelStorei(GL11.GL_UNPACK_ALIGNMENT, 1); IntBuffer scratch = BufferUtils.createIntBuffer(1); GL11.glGenTextures(scratch); int error = GL11.glGetError(); if( error != GL11.GL_NO_ERROR) { System.out.println("Texture.create : error OpenGL ("+error+")"); } handle = scratch.get(0); System.out.println("Creating cube map : "+handle); }
public void bind() { GL11.glBindTexture(GL13.GL_TEXTURE_CUBE_MAP, handle); lastBind = handle; System.out.println("Binding cube map : "+lastBind); }
public void setImages(BufferedImage positiveX,BufferedImage negativeX, BufferedImage positiveY,BufferedImage negativeY, BufferedImage positiveZ,BufferedImage negativeZ) { bind(); GL11.glTexEnvf(GL11.GL_TEXTURE_ENV, GL11.GL_TEXTURE_ENV_MODE, GL11.GL_REPLACE); setImage(GL13.GL_TEXTURE_CUBE_MAP_POSITIVE_X,positiveX); setImage(GL13.GL_TEXTURE_CUBE_MAP_NEGATIVE_X,negativeX); setImage(GL13.GL_TEXTURE_CUBE_MAP_POSITIVE_Y,positiveY); setImage(GL13.GL_TEXTURE_CUBE_MAP_NEGATIVE_Y,negativeY); setImage(GL13.GL_TEXTURE_CUBE_MAP_POSITIVE_Z,positiveZ); setImage(GL13.GL_TEXTURE_CUBE_MAP_NEGATIVE_Z,negativeZ); }
public void setImage(int place, int width, int height, int type, IntBuffer imageData) { System.out.println(lastBind+"Setting image to "+place+" (type :"+type+")"); GL11.glTexImage2D(place, 0, GL11.GL_RGBA, width, height, 0, type, GL11.GL_UNSIGNED_BYTE, imageData); int error = GL11.glGetError(); if( error != GL11.GL_NO_ERROR) { System.out.println("Texture.setImage : error OpenGL ("+error+")"); } }
public void setImage(int place,BufferedImage img) { if(img.getTransparency() == Transparency.OPAQUE) { if ((img.getType() == BufferedImage.TYPE_BYTE_BINARY)||(img.getType() == BufferedImage.TYPE_BYTE_INDEXED)) { BufferedImage img2 = new BufferedImage(img.getWidth(),img.getHeight(),BufferedImage.TYPE_3BYTE_BGR); Graphics g = img2.getGraphics(); g.drawImage(img, 0, 0, null); g.dispose(); setImage(place,img2); } else { ByteBuffer imageData = ByteBuffer.allocateDirect(3 * img.getWidth() * img.getHeight()); byte data[] = (byte[]) img.getRaster().getDataElements(0, 0, img.getWidth(), img.getHeight(), null); imageData.put(data); imageData.flip(); setImage(place,img.getWidth(),img.getHeight(),RGB,imageData); } } else { if ((img.getType() == BufferedImage.TYPE_BYTE_BINARY)||(img.getType() == BufferedImage.TYPE_BYTE_INDEXED)) { BufferedImage img2 = new BufferedImage(img.getWidth(),img.getHeight(),BufferedImage.TYPE_INT_ARGB); Graphics g = img2.getGraphics(); g.drawImage(img, 0, 0, null); g.dispose(); setImage(place,img2); } else if (img.getType() == BufferedImage.TYPE_INT_ARGB ) { IntBuffer imageData = Util.IntBuffer(img.getWidth() * img.getHeight()); int data[] = (int[]) img.getRaster().getDataElements(0, 0, img.getWidth(), img.getHeight(), null); imageData.put(data); imageData.flip(); setImage(place,img.getWidth(),img.getHeight(),RGBA,imageData); } else { ByteBuffer imageData = ByteBuffer.allocateDirect(4 * img.getWidth() * img.getHeight()); byte data[] = (byte[]) img.getRaster().getDataElements(0, 0, img.getWidth(), img.getHeight(), null); imageData.put(data); imageData.flip(); setImage(place,img.getWidth(),img.getHeight(),RGBA,imageData); } } } |