Advertisement
LukacikPavel

cv09 ugr

Nov 19th, 2018
182
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 16.85 KB | None | 0 0
  1.  
  2. import org.lwjgl.glfw.*;
  3. import org.lwjgl.opengl.GL;
  4. import org.lwjgl.system.MemoryStack;
  5. import static org.lwjgl.stb.STBImage.*;
  6. import static org.lwjgl.stb.STBImageResize.*;
  7.  
  8. import static org.lwjgl.glfw.GLFW.*;
  9. import static org.lwjgl.opengl.GL11.*;
  10. import static org.lwjgl.system.MemoryUtil.*;
  11. import static org.lwjgl.system.MemoryStack.*;
  12. import static org.lwjgl.BufferUtils.*;
  13. import static org.lwjgl.opengl.ARBMultitexture.*;
  14.  
  15. import java.io.InputStream;
  16. import java.nio.*;
  17. import java.nio.channels.*;
  18. import java.nio.file.*;
  19.  
  20. import java.io.*;
  21.  
  22. public class cv09 {
  23.    
  24.     private int pfupjs;
  25.     private int stena;
  26.     private int podstava;
  27.     private int voda;
  28.     private int back, bottom, top, left, right, front;
  29.  
  30.     private static ByteBuffer resizeBuffer(ByteBuffer buffer, int newCapacity) {
  31.         ByteBuffer newBuffer = org.lwjgl.BufferUtils.createByteBuffer(newCapacity);
  32.         buffer.flip();
  33.         newBuffer.put(buffer);
  34.         return newBuffer;
  35. }  
  36.     private ByteBuffer ioResourceToByteBuffer(String resource, int bufferSize) throws IOException {
  37.         ByteBuffer buffer;
  38.  
  39.         Path path = Paths.get(resource);
  40.         if (Files.isReadable(path)) {
  41.             try (SeekableByteChannel fc = Files.newByteChannel(path)) {
  42.                 buffer = org.lwjgl.BufferUtils.createByteBuffer((int)fc.size() + 1);
  43.                 while (fc.read(buffer) != -1) {
  44.                     ;
  45.                 }
  46.             }
  47.         } else {
  48.             try (
  49.                 InputStream source = this.getClass().getClassLoader().getResourceAsStream(resource);
  50.                 ReadableByteChannel rbc = Channels.newChannel(source)
  51.             ) {
  52.                 buffer = createByteBuffer(bufferSize);
  53.  
  54.                 while (true) {
  55.                     int bytes = rbc.read(buffer);
  56.                     if (bytes == -1) {
  57.                         break;
  58.                     }
  59.                     if (buffer.remaining() == 0) {
  60.                         buffer = resizeBuffer(buffer, buffer.capacity() * 3 / 2); // 50%
  61.                     }
  62.                 }
  63.             }
  64.         }
  65.  
  66.         buffer.flip();
  67.         return buffer.slice();
  68.     }
  69.    
  70.    
  71.      private int createTexture(String Path) {
  72.             int texID = glGenTextures();
  73.             ByteBuffer imageBuffer;
  74.             try {
  75.                 imageBuffer = ioResourceToByteBuffer(Path, 8 * 1024);
  76.             } catch (Exception e) {
  77.                 throw new RuntimeException(e);
  78.             }
  79.             int w,h,comp;
  80.             ByteBuffer image;
  81.             try (MemoryStack stack = stackPush()) {
  82.                 IntBuffer wB    = stack.mallocInt(1);
  83.                 IntBuffer hB    = stack.mallocInt(1);
  84.                 IntBuffer compB = stack.mallocInt(1);
  85.  
  86.                 // Use info to read image metadata without decoding the entire image.
  87.                 // We don't need this for this demo, just testing the API.
  88.                 if (!stbi_info_from_memory                 
  89.                        
  90.                         (imageBuffer, wB, hB, compB)) {
  91.                     throw new RuntimeException("Failed to read image information: " + stbi_failure_reason());
  92.                 }
  93.  
  94. /*              System.out.println("Image width: " + wB.get(0));
  95.                 System.out.println("Image height: " + hB.get(0));
  96.                 System.out.println("Image components: " + compB.get(0));
  97.                 System.out.println("Image HDR: " + stbi_is_hdr_from_memory(imageBuffer));*/
  98.  
  99.                 // Decode the image
  100.                 image = stbi_load_from_memory(imageBuffer, wB, hB, compB, 0);
  101.                 if (image == null) {
  102.                     throw new RuntimeException("Failed to load image: " + stbi_failure_reason());
  103.                 }
  104.  
  105.                 w = wB.get(0);
  106.                 h = hB.get(0);
  107.                 comp = compB.get(0);
  108.     }          
  109.  
  110.             glBindTexture(GL_TEXTURE_2D, texID);
  111.             glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
  112.             glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
  113. //          glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
  114. //          glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
  115.  
  116.             int format;
  117.  
  118.             if (comp == 3) {
  119.                 if ((w & 3) != 0) {
  120.                     glPixelStorei(GL_UNPACK_ALIGNMENT, 2 - (w & 1));
  121.                 }
  122.                 format = GL_RGB;
  123.             } else {
  124. //              premultiplyAlpha();
  125. //              glEnable(GL_BLEND);
  126. //              glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
  127.  
  128.                 format = GL_RGBA;
  129.     }
  130.  
  131.             glTexImage2D(GL_TEXTURE_2D, 0, format, w, h, 0, format, GL_UNSIGNED_BYTE, image);
  132.  
  133.             ByteBuffer input_pixels = image;
  134.             int        input_w      = w;
  135.             int        input_h      = h;
  136.             int        mipmapLevel  = 0;
  137.             while (1 < input_w || 1 < input_h) {
  138.                 int output_w = Math.max(1, input_w >> 1);
  139.                 int output_h = Math.max(1, input_h >> 1);
  140.  
  141.                 ByteBuffer output_pixels = memAlloc(output_w * output_h * comp);
  142.                 stbir_resize_uint8_generic(
  143.                     input_pixels, input_w, input_h, input_w * comp,
  144.                     output_pixels, output_w, output_h, output_w * comp,
  145.                     comp, comp == 4 ? 3 : STBIR_ALPHA_CHANNEL_NONE, STBIR_FLAG_ALPHA_PREMULTIPLIED,
  146.                     STBIR_EDGE_CLAMP,
  147.                     STBIR_FILTER_MITCHELL,
  148.                     STBIR_COLORSPACE_SRGB
  149.                 );
  150.  
  151.                 if (mipmapLevel == 0) {
  152.                     stbi_image_free(image);
  153.                 } else {
  154.                     memFree(input_pixels);
  155.                 }
  156.  
  157.                 glTexImage2D(GL_TEXTURE_2D, ++mipmapLevel, format, output_w, output_h, 0, format, GL_UNSIGNED_BYTE, output_pixels);
  158.  
  159.                 input_pixels = output_pixels;
  160.                 input_w = output_w;
  161.                 input_h = output_h;
  162.             }
  163.             if (mipmapLevel == 0) {
  164.                 stbi_image_free(image);
  165.             } else {
  166.                 memFree(input_pixels);
  167.             }
  168.  
  169.             return texID;
  170.     }
  171.    
  172.     private int sirka = 800;
  173.     private int vyska = 600;
  174.  
  175.     Vector3f[] vrcholy = {
  176.             new Vector3f(-1,0,+1),
  177.             new Vector3f(+1,0,+1),
  178.             new Vector3f(+1,0,-1),
  179.             new Vector3f(-1,0,-1),
  180.             new Vector3f(0,2,0),
  181.             };
  182.  
  183.     Vector3f[] farba = {
  184.             new Vector3f(1,0,0),
  185.             new Vector3f(0,1,0),
  186.             new Vector3f(0,0,1),
  187.             new Vector3f(1,0,1),
  188.             new Vector3f(1,1,0),
  189.             new Vector3f(0,1,1)
  190. };
  191.  
  192.     int[][] steny = {
  193.             {0,1,4},
  194.             {1,2,4},
  195.             {2,3,4},
  196.             {3,0,4},
  197.             {0,3,2,1}
  198.     };
  199.    
  200.     double uhol=0;
  201.     double t = 0;
  202.    
  203.     void vykresliGL() {
  204.         //glLoadIdentity();
  205.         //glRotated(-0.03, 1, 1, 1);
  206.        
  207.         //kockaPF();
  208.         //pyramida();
  209.        
  210. //      t += 0.0001;
  211. //      glTranslated(-1, 0, 0);
  212. //      trojuholnik(voda, t);
  213. //      glTranslated(2, 0, 0);
  214. //      trojuholnik(stena, 0);
  215. //      glTranslated(-1, -2, 0);
  216. //      trojuholnik(stena, voda, t);
  217. //      glTranslated(0, 2, 0);
  218.        
  219.         kocka();
  220.        
  221.  
  222.     }
  223.    
  224.     void trojuholnik(int textura, double t) {
  225.         glActiveTextureARB(GL_TEXTURE0_ARB);
  226.         glBindTexture(GL_TEXTURE_2D, textura);
  227.         glEnable(GL_TEXTURE_2D);
  228.        
  229.         glBegin(GL_TRIANGLES);
  230.         glTexCoord2d(0+t, 1+t);
  231.         glVertex2f(-1.0f, 0.0f);
  232.         glTexCoord2d(1+t, 1+t);
  233.         glVertex2f(1.0f, 0.0f);
  234.         glTexCoord2d(0.5+t, 0+t);
  235.         glVertex2f(0.0f, 2.0f);
  236.         glEnd();
  237.        
  238.         glActiveTextureARB(GL_TEXTURE0_ARB);
  239.         glDisable(GL_TEXTURE_2D);
  240.     }
  241.    
  242.     void trojuholnik(int textura1, int textura2, double t) {
  243.         glActiveTextureARB(GL_TEXTURE1_ARB);
  244.         glBindTexture(GL_TEXTURE_2D, textura1);
  245.         glEnable(GL_TEXTURE_2D);
  246.        
  247.         glActiveTextureARB(GL_TEXTURE2_ARB);
  248.         glBindTexture(GL_TEXTURE_2D, textura2);
  249.         glEnable(GL_TEXTURE_2D);
  250.        
  251.        
  252.         glBegin(GL_TRIANGLES);
  253.         glMultiTexCoord2dARB(GL_TEXTURE1_ARB, 0, 1);
  254.         glMultiTexCoord2dARB(GL_TEXTURE2_ARB, 0+t, 1+t);
  255.         glVertex2f(-1.0f, 0.0f);
  256.         glMultiTexCoord2dARB(GL_TEXTURE1_ARB, 1, 1);
  257.         glMultiTexCoord2dARB(GL_TEXTURE2_ARB, 1+t, 1+t);
  258.         glVertex2f(1.0f, 0.0f);
  259.         glMultiTexCoord2dARB(GL_TEXTURE1_ARB, 0.5, 0);
  260.         glMultiTexCoord2dARB(GL_TEXTURE2_ARB, 0.5+t, 0+t);
  261.         glVertex2f(0.0f, 2.0f);
  262.         glEnd();
  263.        
  264.         glActiveTextureARB(GL_TEXTURE1_ARB);
  265.         glDisable(GL_TEXTURE_2D);
  266.        
  267.         glActiveTextureARB(GL_TEXTURE2_ARB);
  268.         glDisable(GL_TEXTURE_2D);
  269.     }
  270.    
  271.     void kockaPF() {
  272.         glBindTexture(GL_TEXTURE_2D, pfupjs);
  273.         glBegin(GL_QUADS);
  274.         glTexCoord2d(0, 1);
  275.         glVertex3d(-1, -1, 0);
  276.         glTexCoord2d(1, 1);
  277.         glVertex3d(+1, -1, 0);
  278.         glTexCoord2d(1, 0);
  279.         glVertex3d(+1, +1, 0);
  280.         glTexCoord2d(0, 0);
  281.         glVertex3d(-1, +1, 0);
  282.        
  283.         glTexCoord2d(0, 2);
  284.         glVertex3d(-1, -1, -2);
  285.         glTexCoord2d(2, 2);
  286.         glVertex3d(-1, -1, 0);
  287.         glTexCoord2d(2, 0);
  288.         glVertex3d(-1, 1, 0);
  289.         glTexCoord2d(0, 0);
  290.         glVertex3d(-1, 1, -2);
  291.        
  292.         glTexCoord2d(0, 0);
  293.         glVertex3d(-1, -1, -2);
  294.         glTexCoord2d(0, 3);
  295.         glVertex3d(-1, 1, -2);
  296.         glTexCoord2d(3, 3);
  297.         glVertex3d(1, 1, -2);
  298.         glTexCoord2d(3, 0);
  299.         glVertex3d(1, -1, -2);
  300.        
  301.         glTexCoord2d(0, 4);
  302.         glVertex3d(1, -1, 0);
  303.         glTexCoord2d(4, 4);
  304.         glVertex3d(1, -1, -2);
  305.         glTexCoord2d(4, 0);
  306.         glVertex3d(1, 1, -2);
  307.         glTexCoord2d(0, 0);
  308.         glVertex3d(1, 1, 0);
  309.        
  310.         glTexCoord2d(0, 5);
  311.         glVertex3d(-1, 1, 0);
  312.         glTexCoord2d(5, 5);
  313.         glVertex3d(1, 1, 0);
  314.         glTexCoord2d(5, 0);
  315.         glVertex3d(1, 1, -2);
  316.         glTexCoord2d(0, 0);
  317.         glVertex3d(-1, 1, -2);
  318.        
  319.         glTexCoord2d(0, 6);
  320.         glVertex3d(-1, -1, -2);
  321.         glTexCoord2d(6, 6);
  322.         glVertex3d(1, -1, -2);
  323.         glTexCoord2d(6, 0);
  324.         glVertex3d(1, -1, 0);
  325.         glTexCoord2d(0, 0);
  326.         glVertex3d(-1, -1, 0);
  327.        
  328.         glEnd();
  329.     }
  330.    
  331.     void kocka() {
  332.         glActiveTextureARB(GL_TEXTURE1_ARB);
  333.         glBindTexture(GL_TEXTURE_2D, bottom);
  334.         glEnable(GL_TEXTURE_2D);
  335.        
  336.         glActiveTextureARB(GL_TEXTURE2_ARB);
  337.         glBindTexture(GL_TEXTURE_2D, top);
  338.         glEnable(GL_TEXTURE_2D);
  339.        
  340.         glActiveTextureARB(GL_TEXTURE3_ARB);
  341.         glBindTexture(GL_TEXTURE_2D, left);
  342.         glEnable(GL_TEXTURE_2D);
  343.        
  344.         glActiveTextureARB(GL_TEXTURE4_ARB);
  345.         glBindTexture(GL_TEXTURE_2D, right);
  346.         glEnable(GL_TEXTURE_2D);
  347.        
  348.         glActiveTextureARB(GL_TEXTURE5_ARB);
  349.         glBindTexture(GL_TEXTURE_2D, front);
  350.         glEnable(GL_TEXTURE_2D);
  351.        
  352.         glActiveTextureARB(GL_TEXTURE6_ARB);
  353.         glBindTexture(GL_TEXTURE_2D, back);
  354.         glEnable(GL_TEXTURE_2D);
  355.        
  356.         glBegin(GL_QUADS);
  357.         glMultiTexCoord2dARB(GL_TEXTURE6_ARB, 0, 1);
  358.         glVertex3d(-50, -50, 50);
  359.         glMultiTexCoord2dARB(GL_TEXTURE6_ARB, 1, 1);
  360.         glVertex3d(50, -50, 50);
  361.         glMultiTexCoord2dARB(GL_TEXTURE6_ARB, 1, 0);
  362.         glVertex3d(50, 50, 50);
  363.         glMultiTexCoord2dARB(GL_TEXTURE6_ARB, 0, 0);
  364.         glVertex3d(-50, 50, 50);
  365.        
  366.         glMultiTexCoord2dARB(GL_TEXTURE3_ARB, 0, 1);
  367.         glVertex3d(-50, -50, -50);
  368.         glMultiTexCoord2dARB(GL_TEXTURE3_ARB, 1, 1);
  369.         glVertex3d(-50, -50, 50);
  370.         glMultiTexCoord2dARB(GL_TEXTURE3_ARB, 1, 0);
  371.         glVertex3d(-50, 50, 50);
  372.         glMultiTexCoord2dARB(GL_TEXTURE3_ARB, 0, 0);
  373.         glVertex3d(-50, 50, -50);
  374.        
  375.         glMultiTexCoord2dARB(GL_TEXTURE5_ARB, 0, 0);
  376.         glVertex3d(-50, -50, -50);
  377.         glMultiTexCoord2dARB(GL_TEXTURE5_ARB, 0, 1);
  378.         glVertex3d(-50, 50, -50);
  379.         glMultiTexCoord2dARB(GL_TEXTURE5_ARB, 1, 1);
  380.         glVertex3d(50, 50, -50);
  381.         glMultiTexCoord2dARB(GL_TEXTURE5_ARB, 1, 0);
  382.         glVertex3d(50, -50, -50);
  383.        
  384.         glMultiTexCoord2dARB(GL_TEXTURE4_ARB, 0, 1);
  385.         glVertex3d(50, -50, 50);
  386.         glMultiTexCoord2dARB(GL_TEXTURE4_ARB, 1, 1);
  387.         glVertex3d(50, -50, -50);
  388.         glMultiTexCoord2dARB(GL_TEXTURE4_ARB, 1, 0);
  389.         glVertex3d(50, 50, -50);
  390.         glMultiTexCoord2dARB(GL_TEXTURE4_ARB, 0, 0);
  391.         glVertex3d(1, 1, 0);
  392.        
  393.         glMultiTexCoord2dARB(GL_TEXTURE2_ARB, 0, 1);
  394.         glVertex3d(-50, 50, 50);
  395.         glMultiTexCoord2dARB(GL_TEXTURE2_ARB, 1, 1);
  396.         glVertex3d(50, 50, 50);
  397.         glMultiTexCoord2dARB(GL_TEXTURE2_ARB, 1, 0);
  398.         glVertex3d(50, 50, -50);
  399.         glMultiTexCoord2dARB(GL_TEXTURE2_ARB, 0, 0);
  400.         glVertex3d(-50, 50, -50);
  401.        
  402.         glMultiTexCoord2dARB(GL_TEXTURE1_ARB, 0, 1);
  403.         glVertex3d(-50, -50, -50);
  404.         glMultiTexCoord2dARB(GL_TEXTURE1_ARB, 1, 1);
  405.         glVertex3d(50, -50, -50);
  406.         glMultiTexCoord2dARB(GL_TEXTURE1_ARB, 1, 0);
  407.         glVertex3d(50, -50, 50);
  408.         glMultiTexCoord2dARB(GL_TEXTURE1_ARB, 0, 0);
  409.         glVertex3d(-50, -50, 50);
  410.        
  411.         glEnd();
  412.     }
  413.    
  414.     void pyramidaVoda() {
  415.         glBindTexture(GL_TEXTURE_2D, voda);
  416.         glBegin(GL_TRIANGLES);
  417.         glTexCoord2d(0, 1);
  418.         glVertex3f(-1.0f, 0.0f, 1.0f);
  419.         glTexCoord2d(1, 1);
  420.         glVertex3f(1.0f, 0.0f, 1.0f);
  421.         glTexCoord2d(0.5, 0);
  422.         glVertex3f(0.0f, 2.0f, 0.0f);
  423.  
  424.         glTexCoord2d(0, 1);
  425.         glVertex3f(1.0f, 0.0f, 1.0f);
  426.         glTexCoord2d(1, 1);
  427.         glVertex3f(1.0f, 0.0f, -1.0f);
  428.         glTexCoord2d(0.5, 0);
  429.         glVertex3f(0.0f, 2.0f, 0.0f);
  430.  
  431.         glTexCoord2d(0, 1);
  432.         glVertex3f(1.0f, 0.0f, -1.0f);
  433.         glTexCoord2d(1, 1);
  434.         glVertex3f(-1.0f, 0.0f, -1.0f);
  435.         glTexCoord2d(0.5, 0);
  436.         glVertex3f(0.0f, 2.0f, 0.0f);
  437.  
  438.         glTexCoord2d(0, 1);
  439.         glVertex3f(-1.0f, 0.0f, -1.0f);
  440.         glTexCoord2d(1, 1);
  441.         glVertex3f(-1.0f, 0.0f, 1.0f);
  442.         glTexCoord2d(0.5, 0);
  443.         glVertex3f(0.0f, 2.0f, 0.0f);
  444.         glEnd();
  445.  
  446.         glBegin(GL_QUADS);
  447.         glTexCoord2d(0, 0);
  448.         glVertex3f(-1.0f, 0.0f, -1.0f);
  449.         glTexCoord2d(1, 0);
  450.         glVertex3f(1.0f, 0.0f, -1.0f);
  451.         glTexCoord2d(1, 1);
  452.         glVertex3f(1.0f, 0.0f, 1.0f);
  453.         glTexCoord2d(0, 1);
  454.         glVertex3f(-1.0f, 0.0f, 1.0f);
  455.         glEnd();
  456.     }
  457.    
  458.     void pyramida() {
  459.         glBindTexture(GL_TEXTURE_2D, stena);
  460.         glBegin(GL_TRIANGLES);
  461.         glTexCoord2d(0, 1);
  462.         glVertex3f(-1.0f, 0.0f, 1.0f);
  463.         glTexCoord2d(1, 1);
  464.         glVertex3f(1.0f, 0.0f, 1.0f);
  465.         glTexCoord2d(0.5, 0);
  466.         glVertex3f(0.0f, 2.0f, 0.0f);
  467.  
  468.         glTexCoord2d(0, 1);
  469.         glVertex3f(1.0f, 0.0f, 1.0f);
  470.         glTexCoord2d(1, 1);
  471.         glVertex3f(1.0f, 0.0f, -1.0f);
  472.         glTexCoord2d(0.5, 0);
  473.         glVertex3f(0.0f, 2.0f, 0.0f);
  474.  
  475.         glTexCoord2d(0, 1);
  476.         glVertex3f(1.0f, 0.0f, -1.0f);
  477.         glTexCoord2d(1, 1);
  478.         glVertex3f(-1.0f, 0.0f, -1.0f);
  479.         glTexCoord2d(0.5, 0);
  480.         glVertex3f(0.0f, 2.0f, 0.0f);
  481.  
  482.         glTexCoord2d(0, 1);
  483.         glVertex3f(-1.0f, 0.0f, -1.0f);
  484.         glTexCoord2d(1, 1);
  485.         glVertex3f(-1.0f, 0.0f, 1.0f);
  486.         glTexCoord2d(0.5, 0);
  487.         glVertex3f(0.0f, 2.0f, 0.0f);
  488.         glEnd();
  489.  
  490.         glBindTexture(GL_TEXTURE_2D, podstava);
  491.         glBegin(GL_QUADS);
  492.         glTexCoord2d(0, 0);
  493.         glVertex3f(-1.0f, 0.0f, -1.0f);
  494.         glTexCoord2d(1, 0);
  495.         glVertex3f(1.0f, 0.0f, -1.0f);
  496.         glTexCoord2d(1, 1);
  497.         glVertex3f(1.0f, 0.0f, 1.0f);
  498.         glTexCoord2d(0, 1);
  499.         glVertex3f(-1.0f, 0.0f, 1.0f);
  500.         glEnd();
  501.     }
  502.  
  503.     long window;
  504.     GLFWErrorCallback errorCallback;
  505.     GLFWKeyCallback   keyCallback;
  506.  
  507.     void spusti() {
  508.         try {
  509.             init();
  510.             loop();
  511.  
  512.             glfwDestroyWindow(window);
  513.             keyCallback.free();
  514.         } finally {
  515.             glfwTerminate();
  516.             errorCallback.free();
  517.         }
  518.     }
  519.  
  520.     void init() {
  521.         glfwSetErrorCallback(errorCallback = GLFWErrorCallback.createPrint(System.err));
  522.         if (!glfwInit())
  523.             throw new IllegalStateException("Chyba pri inicializacii GLFW!!!");
  524.  
  525.         window = glfwCreateWindow(sirka, vyska, "UGR1", NULL, NULL);
  526.         if ( window == NULL )
  527.             throw new RuntimeException("Chyba pri vytvoreni GLFW okna!!!");
  528.  
  529.         glfwSetKeyCallback(window, keyCallback = new GLFWKeyCallback() {
  530.             @Override
  531.             public void invoke(long window, int key,
  532.                     int scancode, int action, int mods) {
  533.                 if (key == GLFW_KEY_ESCAPE && action == GLFW_RELEASE)
  534.                     glfwSetWindowShouldClose(window, true);
  535.            
  536.             }});
  537.  
  538.         GLFWVidMode vidmode = glfwGetVideoMode(glfwGetPrimaryMonitor());
  539.         glfwSetWindowPos(window, (vidmode.width() - sirka) / 2, (vidmode.height() - vyska) / 2);
  540.  
  541.         glfwMakeContextCurrent(window);
  542.         glfwSwapInterval(0);
  543.         glfwShowWindow(window);        
  544.  
  545.         GL.createCapabilities();
  546.    
  547.         glEnable(GL_TEXTURE_2D);
  548.         //glBindTexture(GL_TEXTURE_2D, createTexture("D:\\pfupjs.png"));
  549.         pfupjs = createTexture("D:\\pfupjs.png");
  550.         stena = createTexture("D:\\stena.jpg");
  551.         podstava = createTexture("D:\\podstava.jpg");
  552.         voda = createTexture("D:\\voda.jpg");
  553.         back = createTexture("D:\\back.jpg");
  554.         bottom = createTexture("D:\\bottom.jpg");
  555.         top = createTexture("D:\\top.jpg");
  556.         left = createTexture("D:\\left.jpg");
  557.         right = createTexture("D:\\right.jpg");
  558.         front = createTexture("D:\\front.jpg");
  559.        
  560.        
  561.     }
  562.  
  563.     private static void gluPerspective(double fov, double aspect, double zNear, double zFar) {
  564.         double fH = Math.tan(fov*Math.PI/360.0) * zNear;
  565.         double fW = fH * aspect;
  566.         glFrustum( -fW, fW, -fH, fH, zNear, zFar);     
  567.     }
  568.  
  569.    
  570.     void loop() {
  571.         glViewport(0,0,sirka,vyska);        
  572.  
  573.         glMatrixMode(GL_PROJECTION);
  574.         glLoadIdentity();
  575.         gluPerspective(45.0f, (sirka/(1.0*vyska)), 0.1f, 100.0f);      
  576.  
  577.         glMatrixMode( GL_MODELVIEW );
  578.         glLoadIdentity();
  579.  
  580.         glClearColor( 0.f, 0.f, 0.f, 1.f ); //Initialize clear color
  581.         glTranslated(0, 0, -5);
  582.         glShadeModel(GL_SMOOTH);
  583.         glCullFace(GL_BACK); glEnable(GL_CULL_FACE); //Zneviditeľnenie odvrátených strán
  584.        
  585.         while ( !glfwWindowShouldClose(window) ) {
  586.             glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  587.             vykresliGL();
  588.  
  589.             glfwSwapBuffers(window);
  590.  
  591.             glfwPollEvents();
  592.         }
  593.     }
  594.  
  595.     public static void main(String[] args) {
  596.         new cv09().spusti();
  597.     }
  598. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement