コード例 #1
0
        /// <summary>
        ///  Iscrtavanje OpenGL kontrole.
        /// </summary>
        public void Draw(OpenGL gl)
        {
            gl.ColorMaterial(OpenGL.GL_FRONT, OpenGL.GL_AMBIENT_AND_DIFFUSE);
            setUpLighting(gl);
            gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);

            gl.PushMatrix();

            if (animacijaUToku)
            {
                timer1.Start();
            }

            gl.LookAt(500, 0, 0, 0, 0, -5000, 0, 1, 0);

            gl.Translate(0.0f, 0.0f, -m_sceneDistance);
            gl.Rotate(m_xRotation, 1.0f, 0.0f, 0.0f);
            gl.Rotate(m_yRotation, 0.0f, 1.0f, 0.0f);

            m_scene.Draw();
            m_scene_bullet.Draw();

            reflektor(gl);

            loadGun(gl);
            loadBullet(gl);
            loadFloor(gl);
            loadTargetStand(gl);
            loadTarget(gl);
            loadText(gl);

            gl.PopMatrix();
            // Oznaci kraj iscrtavanja
            gl.Flush();
        }
コード例 #2
0
ファイル: World.cs プロジェクト: hi-imAndy/RG
 private void drawBall(OpenGL gl)
 {
     gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_DECAL);
     gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Ball]);
     gl.PushMatrix();
     gl.Translate(-6.0f + x_red_move, -5.5f + y_red_move, -45.0f + z_red_move);
     gl.Scale(0.5f, 0.5f, 0.5f);
     //gl.Rotate(m_xRotation, 0.0f, 0.0f);
     //gl.Rotate(0.0f, m_yRotation, 0.0f);
     m_scene2.Draw();
     gl.PopMatrix();
     gl.BindTexture(OpenGL.GL_TEXTURE_2D, 0);
     gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_MODULATE);
 }
コード例 #3
0
        private void DrawModel(OpenGL gl)
        {
            gl.PushMatrix();
            gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_MODULATE);

            gl.Translate(x, y, z);
            gl.Scale(2.5f, 2.5f, 2.5f);

            if (m_selectedVerticalScaling_value == 2)
            {
                gl.Translate(0f, 35, 0f);
                gl.Scale(1f, m_selectedVerticalScaling_value, 1f);
            }

            if (m_selectedVerticalScaling_value == 3)
            {
                gl.Translate(0f, 70, 0f);
                gl.Scale(1f, m_selectedVerticalScaling_value, 1f);
            }



            gl.Rotate(0.0f, 135f, 0);

            m_scene.Draw();
            gl.PopMatrix();
            gl.Flush();
        }
コード例 #4
0
ファイル: World.cs プロジェクト: coa98/GRAFIKA-3.2
        private void DrawZamak(OpenGL gl)
        {
            gl.PushMatrix();
            gl.Translate(-50.0f, -600.0f, -600);
            m_scene.Draw();


            gl.PopMatrix();
        }
コード例 #5
0
        private void DrawMeshModel(OpenGL gl)
        {
            gl.Translate(30f, 185.0f, 70.0f);
            gl.Light(OpenGL.GL_LIGHT1, OpenGL.GL_SPOT_DIRECTION, new float[] { 0.0f, -1.0f, 0.0f });
            gl.Light(OpenGL.GL_LIGHT1, OpenGL.GL_POSITION, new float[] { 5.0f, 50.0f, 0f, 1.0f });

            gl.Light(OpenGL.GL_LIGHT1, OpenGL.GL_AMBIENT, m_ambientColor);
            m_scene.Draw();
        }
コード例 #6
0
ファイル: World.cs プロジェクト: rammba/StairsCG
 private void DrawHuman(OpenGL gl)
 {
     gl.PushMatrix();
     gl.Translate(human_coordinateX, human_coordinateY - 1.5, human_coordinateZ);
     gl.Scale(1f * 0.03, MainWindow.humanHeight * 0.03, 1f * 0.03);
     gl.Rotate(human_rotateX, human_rotateY, human_rotateZ);
     m_scene.Draw();
     gl.PopMatrix();
 }
コード例 #7
0
        /// <summary>
        ///  Iscrtavanje OpenGL kontrole.
        /// </summary>
        public void Draw(OpenGL gl)
        {
            if (m_startAnimation)
            {
                animationTimer.Start();
            }
            else
            {
                animationTimer.Stop();
                cameraRotation = 0.0f;
                doorRotation   = 0.0f;
            }

            gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);
            gl.LoadIdentity();

            gl.PushMatrix();
            gl.Translate(0.0f, 0.0f, -m_sceneDistance);
            gl.Rotate(m_xRotation, 1.0f, 0.0f, 0.0f);
            gl.Rotate(m_yRotation, 0.0f, 1.0f, 0.0f);
            // Pozicioniranje kamere
            gl.LookAt(-500, 300, 1000, 0, 0, 0, 0, 1, 0);

            gl.PushMatrix();
            gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_ADD);
            gl.Translate(0f, 250f, -380f);
            gl.Scale(scale_factor * 20f, scale_factor * 20f, scale_factor * 20f);
            gl.Rotate(30f, cameraRotation, 0f);
            SetupReflectorLighting(gl, redLight);
            m_scene.Draw();
            gl.PopMatrix();

            gl.Enable(OpenGL.GL_TEXTURE_2D);
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.CONCRETE]);
            gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_MODULATE);
            DrawBase(gl);
            gl.Disable(OpenGL.GL_TEXTURE_2D);

            gl.Enable(OpenGL.GL_TEXTURE_2D);
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.BRICKS]);
            gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_MODULATE);
            DrawWalls(gl);
            gl.Disable(OpenGL.GL_TEXTURE_2D);

            DrawCage(gl);

            gl.Enable(OpenGL.GL_TEXTURE_2D);
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.RUST]);
            gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_MODULATE);
            DrawDoor(gl);
            gl.Disable(OpenGL.GL_TEXTURE_2D);

            gl.PopMatrix();
            DrawText(gl);
            gl.Flush();
        }
コード例 #8
0
ファイル: World.cs プロジェクト: hi-imAndy/RG
 private void drawTable(OpenGL gl)
 {
     gl.PushMatrix();
     gl.Translate(-3.0f, -10.0f, -45.0f);
     gl.Scale(0.25f, 0.15f, 0.25f);
     //gl.Rotate(m_xRotation, 0.0f, 0.0f);
     //gl.Rotate(0.0f, m_yRotation, 0.0f);
     m_scene.Draw();
     gl.PopMatrix();
 }
コード例 #9
0
ファイル: World.cs プロジェクト: coa98/GRAFIKA-3.2
        private void DrawArrow(OpenGL gl)
        {
            gl.PushMatrix();
            gl.Translate(ax, ay, az);
            gl.Scale(50.2f, skaliranje, 50.2f);
            gl.Rotate(0.0f, 90f, 0f);
            m_arrow.Draw();


            gl.PopMatrix();
        }
コード例 #10
0
 private void DrawPC()
 {
     gl.PushMatrix();
     //Iscrtaj kompjuter
     gl.Translate(1, 0, 0);
     gl.Rotate(90, 1, 0, 0);
     gl.Rotate(-90, 0, 0, 1);
     gl.Scale(5, 5, 5);
     m_scene.Draw();
     gl.PopMatrix();
 }
コード例 #11
0
        private void Golf_Club(OpenGL gl)
        {
            gl.PushMatrix();
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Ball]);
            gl.Color(0.3f, 0.3f, 0.3f);
            gl.Translate(positionGolf_Club[0], positionGolf_Club[1], positionGolf_Club[2]);
            gl.Rotate(rotationGolf_Club[0], rotationGolf_Club[1], rotationGolf_Club[2]);
            gl.Scale(0.2f, 0.35f, 0.2f);

            m_scene.Draw();
            gl.PopMatrix();
        }
コード例 #12
0
ファイル: World.cs プロジェクト: stefanlukic95/grafika2017
        public void drawArrow(OpenGL gl)
        {
            gl.PushMatrix();
            gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_MODULATE);
            gl.Translate(arrowXTranslate, arrowYTranslate, arrowZTranslate);
            gl.Scale(arrowVal, arrowVal, 2.0f);
            gl.Rotate(180.0f, 0.0f, 0.0f + arrowXRotation);
            gl.Color(1.0f, 0.0f, 1.0f);


            m_strela.Draw();

            gl.PopMatrix();
        }
コード例 #13
0
        public void drawCamera(OpenGL gl)
        {
            gl.PushMatrix();
            gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_ADD);
            gl.Color(1.0f, 0.0f, 0.0f);
            gl.Translate(-400.0f, 100.0f, -350.0f);
            gl.Rotate(0f, c_rotation, 0f);
            gl.Rotate(m_earthRotation, 0f, 1f, 0f);
            gl.Rotate(0.0f, 60.0f, 0.0f);

            gl.Scale(0.05f, 0.05f, 0.05f);
            m_scene.Draw();
            gl.PopMatrix();
        }
コード例 #14
0
        private void IscrtajDvorac(OpenGL gl)
        {
            gl.Color(0.9, 0.9, 0.9, 1.0);
            float[] pozicija = { 0.0f, 10.0f, 0.0f, 1.0f };
            gl.Light(OpenGL.GL_LIGHT1, OpenGL.GL_POSITION, pozicija);

            gl.PushMatrix();
            var faktorSkaliranjaDvorca = 10.0f;

            gl.Translate(0.0f, 0.0f, -0.2f);
            gl.Rotate(90.0f, 1.0f, 0.0f, 0.0f);
            gl.Scale(faktorSkaliranjaDvorca * 5f, faktorSkaliranjaDvorca * 5.0f, faktorSkaliranjaDvorca * 5f);
            m_scene_castle.Draw();
            gl.PopMatrix();
        }
コード例 #15
0
ファイル: World.cs プロジェクト: PlumpMath/sharpGLcode
        private void drawVozilo(OpenGL gl, double scale, int angleToMakeNormal)
        {
            resetMaterial(gl);
            gl.Enable(OpenGL.GL_TEXTURE_2D);
            gl.PushMatrix();
            gl.Rotate(0, angleToMakeNormal, 0);
            gl.Scale(scale, scale, scale);
            m_scene.Draw();
            gl.PopMatrix();
            gl.Color(1.0, 1.0, 1.0, 1.0);
            gl.Disable(OpenGL.GL_TEXTURE_2D);


            gl.Enable(OpenGL.GL_COLOR_MATERIAL); // jer assimp napravi metez
            gl.Color(1f, 1f, 1f, 1f);
        }
コード例 #16
0
ファイル: World.cs プロジェクト: maricn96/barrel-rolling
        /// <summary>
        ///  Iscrtavanje OpenGL kontrole.
        /// </summary>
        public void Draw(OpenGL gl)
        {
            gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);

            //#grid samo za laksu orijentaciju (obrisi)
            gl.PushMatrix();
            gl.Translate(0.0f, 0.0f, -m_sceneDistance);
            gl.Rotate(15f, 0f, 1f, 1f);
            Grid grid = new Grid();

            grid.Render(gl, RenderMode.Design);
            gl.PopMatrix();


            gl.PushMatrix();
            gl.Translate(0.0f, 0.0f, -m_sceneDistance);
            gl.Rotate(m_xRotation + 10, 1.0f, 0.0f, 0.0f);
            gl.Rotate(m_yRotation, 0.0f, 1.0f, 0.0f);
            gl.Scale(2f, 2f, 2f);

            //#iscrtavanje baze
            drawBase(gl);

            //#iscrtavanje modela bureta
            gl.PushMatrix();
            gl.Translate(-0.1f, 1.3f, -0.153f);

            m_scene.Draw();
            gl.PopMatrix();

            //#iscrtavanje cilindra
            drawCylinder(gl);

            //#iscrtavanje diska
            drawDisk(gl);

            gl.PopMatrix();

            //#ispis 2d teksta
            drawText(gl);

            gl.Flush();
        }
コード例 #17
0
        private void IscrtajStrele(OpenGL gl, float faktorSkaliranjaStrele = 1f)
        {
            int brojStrela          = 10;
            var mojFaktorSkaliranja = 4.0f;

            for (float idxStrele = 1; idxStrele <= brojStrela; idxStrele++) // float kako ne bih gubio decimale pri deljenju
            {
                gl.PushMatrix();
                float jedinstveniPomerajStrele;

                gl.Scale(faktorSkaliranjaStrele * mojFaktorSkaliranja, faktorSkaliranjaStrele * mojFaktorSkaliranja, faktorSkaliranjaStrele * mojFaktorSkaliranja); // povecavam malo strelu, jer je dosta mala

                jedinstveniPomerajStrele = PomerajStrele;
                jedinstveniPomerajStrele = Clamp(jedinstveniPomerajStrele, 0f, 3000f);

                gl.Translate(-2.0f + idxStrele / 3, -jedinstveniPomerajStrele, 1.0f);
                gl.Rotate(90.0f, 0.0f, 0.0f, 1.0f);  // podizem strele
                gl.Rotate(180.0f, 0.0f, 1.0f, 0.0f); // okrecem ih ka meni

                m_scene_arrow.Draw();

                gl.PopMatrix();
            }
        }
コード例 #18
0
ファイル: World.cs プロジェクト: stefanlukic95/grafika2017
        public void Draw(OpenGL gl)
        {
            gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);

            gl.PushMatrix();
            gl.MatrixMode(OpenGL.GL_MODELVIEW);
            gl.LoadIdentity();
            gl.LookAt(0.0f, 1000.0f, 300.0f,
                      0.0f, 950.0f, 0.0f,
                      0.0f, 1.0f, 0.0f);
            gl.Translate(m_xtranslate, m_ytranslate, -m_sceneDistance);
            gl.Rotate(m_xRotation, 1.0f, 0.0f, 0.0f);
            gl.Rotate(m_yRotation, 0.0f, 1.0f, 0.0f);

            drawGround(gl);
            drawTrack(gl);

            gl.PushMatrix();
            gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_MODULATE);

            m_scene.Draw();
            gl.PopMatrix();

            drawArrow(gl);

            drawCube1(gl);
            drawCube2(gl);
            draw3DText(gl);

            setupLighting(gl);
            setupTargetLight(gl);

            gl.PopMatrix();

            gl.Flush();
        }
コード例 #19
0
        //ostale metode
        public void drawScene(OpenGL gl)
        {
            gl.MatrixMode(OpenGL.GL_MODELVIEW);
            //gl.ClearColor(1.0f, 1.0f, 1.0f, 1.0f);
            //gl.Color(1.0f, 1.0f, 1.0f, 1.0f);
            //gl.Color(0.0f, 0.0f, 0.0f, 1.0f);

            //pocetak iscrtavanja
            gl.PushMatrix();

            //kamion
            gl.PushMatrix();
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Empty]);
            gl.Translate(10.0f + pozicijaKamiona[0], -5.0f + pozicijaKamiona[1], -80.0f + pozicijaKamiona[2]);
            gl.Rotate(0.0f, rotacijaKamiona, 0.0f);
            m_scene.Draw();
            gl.PopMatrix();


            //kontejner
            gl.PushMatrix();
            //gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Empty]);
            //gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL);
            gl.Translate(pozicijaKontejnera[0] - 10.0f, pozicijaKontejnera[1] - 5.0f, -80.0f + pozicijaKontejnera[2]);
            gl.Scale(0.05f, 0.05f, 0.05f);
            gl.Rotate(rotacijaKontejnera[0], rotacijaKontejnera[1], rotacijaKontejnera[2]);
            gl.Rotate(rotacijaKontejnera2[0], rotacijaKontejnera2[1], rotacijaKontejnera2[2]);
            gl.Rotate(rotacijaKontejnera3[0], rotacijaKontejnera3[1], rotacijaKontejnera3[2]);
            m_scene2.Draw();
            gl.PopMatrix();


            //gl.ClearColor(1.0f, 1.0f, 1.0f, 1.0f);


            //podloga
            gl.PushMatrix();
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Asphalt]);
            gl.MatrixMode(OpenGL.GL_TEXTURE);
            gl.LoadIdentity();
            gl.Scale(faktorSkaliranjaPodloge, faktorSkaliranjaPodloge, faktorSkaliranjaPodloge);
            gl.MatrixMode(OpenGL.GL_MODELVIEW);

            gl.Translate(-80.0f, -5.0f, 0.0f);
            gl.Begin(OpenGL.GL_QUADS);
            gl.Normal(0, 1, 0);
            gl.TexCoord(0.0f, 0.0f);
            gl.Vertex(0.0f, 0.0f, 0.0f);
            gl.TexCoord(0.0f, brojPonavljanjaTeksturePuta);
            gl.Vertex(200.0f, 0.0f, 0.0f);
            gl.TexCoord(brojPonavljanjaTeksturePuta, brojPonavljanjaTeksturePuta);
            gl.Vertex(200.0f, 0.0f, -200.0f);
            gl.TexCoord(brojPonavljanjaTeksturePuta, 0.0f);
            gl.Vertex(0.0f, 0.0f, -200.0f);
            gl.End();
            gl.PopMatrix();


            //zidovi sa strana kontejnera
            gl.PushMatrix();
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Empty]);
            gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_MODULATE);
            gl.Translate(0.0f, 0.0f, -80.0f);
            gl.Scale(1f, 8f, 10f);
            cube = new Cube();
            cube.Render(gl, RenderMode.Render);
            gl.PopMatrix();
            gl.PushMatrix();
            gl.Translate(-25.0f, 0.0f, -80.0f);
            gl.Scale(1f, 8f, 10f);
            cube = new Cube();
            cube.Render(gl, RenderMode.Render);
            gl.PopMatrix();


            //bandera
            gl.PushMatrix();
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Metal]);
            gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_MODULATE);

            gl.MatrixMode(OpenGL.GL_TEXTURE);
            gl.LoadIdentity();
            gl.Scale(faktorSkaliranjaBandere, faktorSkaliranjaBandere, faktorSkaliranjaBandere);
            gl.MatrixMode(OpenGL.GL_MODELVIEW);


            gl.Translate(20.0f, -5.0f, -80.0f);
            gl.Rotate(-90.0f, 0.0f, 0.0f);
            gl.Scale(cylinderFactor, cylinderFactor, cylinderFactor);
            cylinder            = new Cylinder();
            cylinder.Height     = lampLightPos[1];
            cylinder.BaseRadius = 0.5f;
            cylinder.TopRadius  = 0.5f;
            cylinder.CreateInContext(gl);
            cylinder.Render(gl, RenderMode.Render);
            cylinder.CreateInContext(gl);

            gl.PopMatrix();

            gl.PushMatrix();
            gl.Translate(lampLightPos[0], lampLightPos[1] - 5.0f, lampLightPos[2]);
            gl.Scale(cubeFactor, cubeFactor, cubeFactor);
            cube = new Cube();
            cube.Render(gl, RenderMode.Render);
            gl.PopMatrix();


            //kraj iscrtavanja
            gl.PopMatrix();
        }
コード例 #20
0
ファイル: World.cs プロジェクト: st3fan7/RG
        /// <summary>
        ///  Iscrtavanje OpenGL kontrole.
        /// </summary>
        public void Draw(OpenGL gl)
        {
            gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);
            gl.FrontFace(OpenGL.GL_CCW);

            gl.PushMatrix();
            gl.LookAt(0, 0, m_sceneDistance + 150, 0, 0, 0, 0, 1, 0);
            gl.Translate(TranslateX, TranslateY, -m_sceneDistance);
            gl.Rotate(m_xRotation, 1.0f, 0.0f, 0.0f);
            gl.Rotate(m_yRotation, 0.0f, 1.0f, 0.0f);


            //gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_DECAL);


            /*
             * gl.PushMatrix();
             * gl.PointSize(50.0f);
             * gl.Translate(0, 0, 0);
             * gl.Begin(OpenGL.GL_POINTS);
             * gl.Color(0.0f, 1.0f, 0.0f);
             * gl.Vertex(0.0f, 0.0f, 0.0f);
             * gl.End();
             * gl.PopMatrix();
             */


            //tackasto
            gl.PushMatrix();
            Cube cube = new Cube();

            float[] poz = new float[] { -300.0f, 180.0f, 0.0f, 1.0f };
            gl.Light(OpenGL.GL_LIGHT0, OpenGL.GL_POSITION, poz);
            gl.Translate(poz[0], poz[1], poz[2]);
            gl.Scale(10.0f, 10.0f, 10.0f);
            gl.Color(0.0f, 0.0f, 1.0f);
            cube.Render(gl, RenderMode.Render);
            gl.PopMatrix();

            /*
             * //reflektor
             * gl.PushMatrix();
             * Cube reflekt = new Cube();
             * float[] light1pos = new float[] {0f, 180f, -215f, 1.0f };
             * float[] light1diffuse = new float[] { 1.0f, 1.0f, 1.0f, 1.0f };
             * float[] light1ambient = new float[] { 0f, 1f, 0f, 1.0f };
             * gl.Light(OpenGL.GL_LIGHT1, OpenGL.GL_POSITION, light1pos);
             * gl.Light(OpenGL.GL_LIGHT1, OpenGL.GL_AMBIENT, light1ambient);
             * gl.Light(OpenGL.GL_LIGHT1, OpenGL.GL_DIFFUSE, light1diffuse);
             * gl.Translate(0.0f, 120.0f, -225f);
             * gl.Scale(10.0f, 10.0f, 10.0f);
             * gl.Color(1.0f, 0.0f, 0.0f);
             * reflekt.Render(gl, RenderMode.Render);
             * gl.PopMatrix();
             */


            gl.PushMatrix();
            Cube reflekt = new Cube();

            SetReflektor(gl);
            gl.Translate(0.0f, 180.0f, -225f);
            gl.Scale(10.0f, 10.0f, 10.0f);
            gl.Color(1.0f, 0.0f, 0.0f);
            reflekt.Render(gl, RenderMode.Render);
            gl.PopMatrix();

            #region Floor + Walls
            gl.PushMatrix(); //Pod
            gl.Enable(OpenGL.GL_TEXTURE_2D);

            gl.MatrixMode(OpenGL.GL_TEXTURE);
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Floor]);
            gl.LoadIdentity();
            gl.Scale(3, 7, 7);
            gl.MatrixMode(OpenGL.GL_MODELVIEW);


            gl.Translate(0, -50, 0);
            gl.Scale(300, 180, 250);
            gl.Begin(OpenGL.GL_QUADS);
            gl.Normal(0f, 1f, 0f);  //Pod
            gl.Color(0.30f, 0.15f, 0.0f);
            gl.TexCoord(1f, 1f);
            gl.Vertex(-1.0f, -1.0f, -1.0f);
            gl.TexCoord(0f, 1f);
            gl.Vertex(-1.0f, -1.0f, 1.0f);
            gl.TexCoord(0f, 0f);
            gl.Vertex(1.0f, -1.0f, 1.0f);
            gl.TexCoord(1f, 0f);
            gl.Vertex(1.0f, -1.0f, -1.0f);
            gl.End();

            gl.MatrixMode(OpenGL.GL_TEXTURE);
            gl.LoadIdentity();
            gl.Scale(1, 1, 1);
            gl.MatrixMode(OpenGL.GL_MODELVIEW);

            gl.Disable(OpenGL.GL_TEXTURE_2D);
            gl.PopMatrix();

            //Zidovi
            gl.PushMatrix();
            gl.Enable(OpenGL.GL_TEXTURE_2D);
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Brick]);
            gl.Translate(0, -50, 0);
            gl.Scale(300, 180, 250);

            gl.Begin(OpenGL.GL_QUADS);
            gl.Color(0.556863f, 0.419608f, 0.137255f); //Nazad zid
            gl.Normal(0f, 0f, 1f);
            gl.TexCoord(0.0f, 0.0f);
            gl.Vertex(-1, -1, -1); //leva dole daleko
            gl.TexCoord(1.0f, 0.0f);
            gl.Vertex(1, -1, -1);  //desna dole daleko
            gl.TexCoord(1.0f, 1.0f);
            gl.Vertex(1, 1, -1);   //desna gore daleko
            gl.TexCoord(0.0f, 1.0f);
            gl.Vertex(-1, 1, -1);  //leva gore daleko
            gl.End();

            gl.Begin(OpenGL.GL_QUADS);
            gl.Color(0.556863f, 0.419608f, 0.137255f); //Desni zid
            gl.Normal(-1f, 0f, 0f);
            gl.TexCoord(1.0f, 1.0f);
            gl.Vertex(1.0f, 1.0f, -1.0f);
            gl.TexCoord(1.0f, 0.0f);
            gl.Vertex(1.0f, -1.0f, -1.0f);
            gl.TexCoord(0.0f, 0.0f);
            gl.Vertex(1.0f, -1.0f, 1.0f);
            gl.TexCoord(0.0f, 1.0f);
            gl.Vertex(1.0f, 1.0f, 1.0f);
            gl.End();

            gl.Begin(OpenGL.GL_QUADS);
            gl.Color(0.556863f, 0.419608f, 0.137255f); //Levi zid
            gl.Normal(1f, 0f, 0f);
            gl.TexCoord(0.0f, 0.0f);
            gl.Vertex(-1, 1, 1);   //levo gore blizu
            gl.TexCoord(0.0f, 1.0f);
            gl.Vertex(-1, -1, 1);  //levo dole blizu
            gl.TexCoord(1.0f, 1.0f);
            gl.Vertex(-1, -1, -1); //levo dole lako
            gl.TexCoord(1.0f, 0.0f);
            gl.Vertex(-1, 1, -1);  //levo gore daleko
            gl.End();

            gl.Disable(OpenGL.GL_TEXTURE_2D);
            gl.PopMatrix();

            #endregion

            #region postolje

            gl.PushMatrix();
            gl.Enable(OpenGL.GL_TEXTURE_2D);
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Wood]);
            Cube postolje = new Cube();
            gl.Normal(0f, 0f, 1f);
            gl.Translate(0.0f, 0.0f, -235.0f);
            gl.Scale(100.0f, 80.0f, 10f);
            gl.Color(0.4f, 0.4f, 0.4f);
            //gl.Color(1f, 1f, 1f);
            gl.Rotate(0f, 0f, -90f);
            postolje.Render(gl, RenderMode.Render);
            gl.Disable(OpenGL.GL_TEXTURE_2D);
            gl.PopMatrix();

            #endregion

            #region pikado
            gl.PushMatrix();
            gl.Enable(OpenGL.GL_TEXTURE_2D);
            gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_MODULATE);

            //gl.Translate(0.0f, 0.0f, -225.0f);
            gl.Translate(translateBoard, 0.0f + this.m_BoardFall_y, -225.0f);
            //gl.Scale(2.0f, 2.0f, 2.0f);
            gl.Scale(scaleBoard, scaleBoard, scaleBoard);

            m_scene.Draw();
            gl.Disable(OpenGL.GL_TEXTURE_2D);
            gl.PopMatrix();
            #endregion

            #region Strelice
            gl.PushMatrix(); //1
            gl.Enable(OpenGL.GL_TEXTURE_2D);
            gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_MODULATE);
            //gl.Translate(0.0f, 0.0f, 0.0f);
            gl.Translate(0.0f, 0.0f, 0.0f + this.m_Dart3_z);
            gl.Scale(10.0f, 10f, 5.0f);

            m_scene2.Draw();
            gl.PopMatrix();

            gl.PushMatrix(); //2
            //gl.Translate(-50.0f, 0.0f, 0.0f);
            gl.Translate(-50.0f, 0.0f, 0.0f + this.m_Dart1_z);
            gl.Scale(10.0f, 10f, 5.0f);

            m_scene2.Draw();
            gl.PopMatrix();

            gl.PushMatrix(); //3
                             //  gl.Translate(50.0f, 0.0f, 0.0f);
            gl.Translate(50.0f, 0.0f, 0.0f + this.m_Dart2_z);
            gl.Scale(10.0f, 10f, 5.0f);

            m_scene2.Draw();
            gl.Disable(OpenGL.GL_TEXTURE_2D);
            gl.PopMatrix();

            #endregion


            #region tekst
            gl.Disable(OpenGL.GL_TEXTURE_2D);
            gl.PushMatrix();
            gl.Viewport(m_width / 2, 0, m_width / 2, m_height / 2);
            gl.MatrixMode(OpenGL.GL_PROJECTION);
            gl.LoadIdentity();
            gl.Ortho2D(-10, 10, -10, 10);
            gl.MatrixMode(OpenGL.GL_MODELVIEW);

            gl.LoadIdentity();
            gl.Translate(-3.0f, -4.0f, 0.0f);
            gl.Color(10.0f, 10.0f, 0.0f);

            gl.PushMatrix();
            gl.DrawText3D("Arial Bold", 14.0f, 0f, 0f, "Predmet: Racunarska grafika");
            gl.PopMatrix();
            gl.PushMatrix();
            gl.DrawText3D("Arial Bold", 14.0f, 0f, 0f, "_________________________");
            gl.PopMatrix();
            gl.PushMatrix();
            gl.Translate(0.0f, -1.0f, 0.0f);
            gl.DrawText3D("Arial Bold", 14.0f, 0f, 0f, "Sk.god: 2020/21");
            gl.PopMatrix();
            gl.PushMatrix();
            gl.Translate(0.0f, -1.0f, 0.0f);
            gl.DrawText3D("Arial Bold", 14.0f, 0f, 0f, "_____________");
            gl.PopMatrix();
            gl.PushMatrix();
            gl.Translate(0.0f, -2.0f, 0.0f);
            gl.DrawText3D("Arial Bold", 14.0f, 0f, 0f, "Ime: Stefan");
            gl.PopMatrix();
            gl.PushMatrix();
            gl.Translate(0.0f, -2.0f, 0.0f);
            gl.DrawText3D("Arial Bold", 14.0f, 0f, 0f, "__________");
            gl.PopMatrix();
            gl.PushMatrix();
            gl.Translate(0.0f, -3.0f, 0.0f);
            gl.DrawText3D("Arial Bold", 14.0f, 0f, 0f, "Prezime: Aradjanin");
            gl.PopMatrix();
            gl.PushMatrix();
            gl.Translate(0.0f, -3.0f, 0.0f);
            gl.DrawText3D("Arial Bold", 14.0f, 0f, 0f, "________________");
            gl.PopMatrix();
            gl.PushMatrix(); gl.Translate(0.0f, -4.0f, 0.0f);
            gl.DrawText3D("Arial Bold", 14.0f, 0f, 0f, "Sifra: 9.1");
            gl.PopMatrix();
            gl.PushMatrix();
            gl.Translate(0.0f, -4.0f, 0.0f);
            gl.DrawText3D("Arial Bold", 14.0f, 0f, 0f, "_______");

            gl.PopMatrix();

            Resize(gl, m_width, m_height);
            gl.PopMatrix();

            #endregion

            // Oznaci kraj iscrtavanja

            gl.PopMatrix();
            gl.Flush();
        }
コード例 #21
0
ファイル: World.cs プロジェクト: tasa1998/grafika
        /// <summary>
        ///  Iscrtavanje OpenGL kontrole.
        /// </summary>
        public void Draw(OpenGL gl)
        {
            gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);
            gl.Viewport(0, 0, m_width, m_height);
            gl.PushMatrix();
            gl.LookAt(0, 0, m_sceneDistance, 0, 0, 0, 0, 1, 0);
            gl.Rotate(m_xRotation, 1.0f, 0.0f, 0.0f);
            gl.Rotate(m_yRotation, 0.0f, 1.0f, 0.0f);

            gl.Light(OpenGL.GL_LIGHT1, OpenGL.GL_SPOT_DIRECTION, new float[] { 0.0f, -1.0f, 0.0f });
            float[] pos = { 0f, 300F, 105f, 1.0f };
            gl.Light(OpenGL.GL_LIGHT1, OpenGL.GL_POSITION, pos);


            gl.PushMatrix();
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.TRAVA]);
            gl.MatrixMode(OpenGL.GL_TEXTURE);
            gl.PushMatrix();
            gl.Scale(3, 3, 3);
            gl.MatrixMode(OpenGL.GL_MODELVIEW);
            gl.Begin(OpenGL.GL_QUADS);
            gl.Normal(0, 1f, 0);
            gl.Color(0.1f, 0.1f, 0.1f);
            gl.TexCoord(0f, 0f);
            gl.Vertex(300f, 0.0f, -300f);
            gl.TexCoord(0f, 1f);

            gl.Vertex(-300f, 0.0f, -300f);
            gl.TexCoord(1f, 1f);

            gl.Vertex(-300f, 0.0f, 300f);
            gl.TexCoord(1f, 0f);
            gl.Vertex(300f, 0.0f, 300f);
            gl.End();
            gl.PopMatrix();

            gl.PushMatrix();
            gl.Translate(-100.0f, 0.0f, -100.0f - distance);
            gl.Scale(3f, 250f, 3f);
            gl.Rotate(-90f, 1, 0, 0);
            gl.Color(1.0f, 1.0f, 1.0f);
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.PLASTIKA]);
            gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_MODULATE);
            Cylinder target = new Cylinder();

            target.TextureCoords = true;
            target.TopRadius     = 1;
            target.CreateInContext(gl);
            target.Render(gl, SharpGL.SceneGraph.Core.RenderMode.Render);
            gl.PopMatrix();

            gl.PushMatrix();
            gl.Translate(100.0f, 0.0f, -100.0f - distance);
            gl.Scale(3f, 250f, 3f);
            gl.Rotate(-90f, 1, 0, 0);
            Cylinder target1 = new Cylinder();

            //target1.NormalGeneration = Normals.Smooth;
            target1.TextureCoords = true;
            target1.TopRadius     = 1;
            target1.CreateInContext(gl);
            target1.Render(gl, SharpGL.SceneGraph.Core.RenderMode.Render);
            gl.PopMatrix();

            gl.PushMatrix();
            gl.Translate(0f, 100.0f, -100f - distance);
            gl.Scale(100f, 3f, 3f);
            gl.Rotate(90f, 1, 0, 0);
            Cylinder target2 = new Cylinder();

            target2.TextureCoords = true;
            target2.TopRadius     = 1;
            target2.CreateInContext(gl);
            target2.Render(gl, SharpGL.SceneGraph.Core.RenderMode.Render);
            gl.PopMatrix();
            gl.MatrixMode(OpenGL.GL_TEXTURE);
            gl.PopMatrix();
            gl.MatrixMode(OpenGL.GL_MODELVIEW);
            gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_ADD);

            gl.PushMatrix();
            gl.Translate(0, jumpH + 10 * size, 100 - ballDistance);

            gl.Rotate(jumpR, 0, 0);
            gl.Translate(0, -10 * size, 0);
            gl.Scale(size, size, size);
            gl.Color(0.3f, 0.3f, 0.3f);
            gl.Rotate(-90, 0, 0);
            m_scene.Draw();
            gl.PopMatrix();

            gl.PopMatrix();



            gl.MatrixMode(OpenGL.GL_PROJECTION);
            gl.PushMatrix();
            gl.Viewport(m_width / 2, 0, m_width / 2, m_height / 2);
            gl.LoadIdentity();

            gl.Ortho2D(-20.0f, 20.0f, -20.0f, 20.0f);
            gl.MatrixMode(OpenGL.GL_MODELVIEW);
            gl.LoadIdentity();
            gl.Color(0.5f, 0.1f, 0.1f);
            gl.PushMatrix();
            gl.Translate(5f, -15f, 0f);
            gl.DrawText3D("Tahoma", 10, 1.0f, 0, "Predmet:Racunarska grafika");
            gl.PopMatrix();
            gl.PushMatrix();
            gl.Translate(5f, -15f, 0f);
            gl.DrawText3D("Tahoma", 10, 1.0f, 0, "_______________________");
            gl.PopMatrix();
            gl.PushMatrix();
            gl.Translate(5f, -16f, 0f);
            gl.DrawText3D("Tahoma", 10, 1.0f, 0, "Sk.god:2020/21");
            gl.PopMatrix();
            gl.PushMatrix();
            gl.Translate(5f, -16f, 0f);
            gl.DrawText3D("Tahoma", 10, 1.0f, 0, "_____________");
            gl.PopMatrix();
            gl.PushMatrix();
            gl.Translate(5f, -17f, 0f);
            gl.DrawText3D("Tahoma", 10, 1.0f, 0, "Ime:Nastasja");
            gl.PopMatrix();
            gl.PushMatrix();
            gl.Translate(5f, -17f, 0f);
            gl.DrawText3D("Tahoma", 10, 1.0f, 0, "___________");
            gl.PopMatrix();
            gl.PushMatrix();
            gl.Translate(5f, -18f, 0f);
            gl.DrawText3D("Tahoma", 10, 1.0f, 0, "Prezime:Damjanac");
            gl.PopMatrix();
            gl.PushMatrix();
            gl.Translate(5f, -18f, 0f);
            gl.DrawText3D("Tahoma", 10, 1.0f, 0, "_______________");
            gl.PopMatrix();
            gl.PushMatrix();
            gl.Translate(5f, -19f, 0f);
            gl.DrawText3D("Tahoma", 10, 1.0f, 0, "Sifra zad:7.2");
            gl.PopMatrix();
            gl.PushMatrix();
            gl.Translate(5f, -19f, 0f);
            gl.DrawText3D("Tahoma", 10, 1.0f, 0, "__________");
            gl.PopMatrix();

            gl.MatrixMode(OpenGL.GL_PROJECTION);
            gl.Viewport(0, 0, m_width, m_height);
            gl.PopMatrix();
            gl.MatrixMode(OpenGL.GL_MODELVIEW);

            gl.Flush();
        }
コード例 #22
0
        /// <summary>
        ///  Iscrtavanje OpenGL kontrole.
        /// </summary>
        public void Draw(OpenGL gl)
        {
            gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);

            gl.LoadIdentity();

            gl.Color(0.4f, 0.4f, 0.4f);

            /*
             *
             * double eyex, double eyey, double eyez,
             * double centerx, double centery, double centerz,
             * double upx, double upy, double upz)
             *
             */
            gl.LookAt(-40, 20, -m_sceneDistance + 10, 0, 0, -m_sceneDistance + 10, 0, 1, 0);

            float[] ambijentalnaKomponenta2 = { Rvalue, Gvalue, Bvalue, 1.0f };
            float[] difuznaKomponenta2      = { 0.1f, 0.1f, 0.1f, 1.0f };
            // float[] spekularnaKomponenta2 = { 0.1f, 0.1f, 0.1f, 1 };

            gl.Light(OpenGL.GL_LIGHT1, OpenGL.GL_AMBIENT,
                     ambijentalnaKomponenta2);
            gl.Light(OpenGL.GL_LIGHT1, OpenGL.GL_DIFFUSE,
                     difuznaKomponenta2);
            //  gl.Light(OpenGL.GL_LIGHT1, OpenGL.GL_SPECULAR,
            // spekularnaKomponenta2);

            float[] pozicija2 = { polozajX, 100.0f, -m_sceneDistance + 25, 1.0f }; //x,y,z,w gde je 1
            gl.Light(OpenGL.GL_LIGHT1, OpenGL.GL_POSITION,
                     pozicija2);

            gl.PushMatrix();



            gl.PushMatrix();



            gl.PopMatrix();

            gl.PushMatrix();



            gl.Enable(OpenGL.GL_DEPTH_TEST);
            gl.Enable(OpenGL.GL_CULL_FACE);
            gl.FrontFace(OpenGL.GL_CCW);


            gl.Translate(5f, -10.0f, -m_sceneDistance + 10);



            gl.Enable(OpenGL.GL_DEPTH_TEST);
            gl.Enable(OpenGL.GL_CULL_FACE);
            gl.FrontFace(OpenGL.GL_CCW);

            gl.Rotate(m_xRotation, 1.0f, 0.0f, 0.0f);
            gl.Rotate(m_yRotation, 0.0f, 1.0f, 0.0f);

            gl.PushMatrix();
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Wood]);
            gl.Translate(-20f, 0f, 0f);
            gl.Rotate(0f, 0f, -90f);
            gl.Rotate(90f, 0f, 0f);

            if (rotiranjeDrzaca)
            {
                gl.Rotate(0f, -angle, 0f);
                gl.Translate(0f, 0f, blagoPodizanjeDrzaca);
            }
            gl.Translate(4.0f, 0f, 0);
            gl.Scale(3f, 7f, 5f);
            //gl.Color(0.5f, 0.5f, 0.5f);

            Cube cube = new Cube();

            gl.Normal(0f, -1f, 0f);

            cube.Render(gl, SharpGL.SceneGraph.Core.RenderMode.Render);


            gl.PopMatrix();

            gl.PushMatrix();

            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Metal]);
            gl.FrontFace(OpenGL.GL_CCW);
            gl.Translate(30.0f, -6.5f, 0f);
            //gl.Color(0.5f, 0.5f, 0.5f);
            gl.Rotate(90f, 0f, 0f);
            Disk disk = new Disk();

            disk.Material           = new SharpGL.SceneGraph.Assets.Material();
            disk.Material.Shininess = 10f;
            disk.OuterRadius        = 10f;
            disk.CreateInContext(gl);;
            disk.TextureCoords = true;


            gl.MatrixMode(OpenGL.GL_TEXTURE);
            gl.LoadIdentity();
            gl.Scale(0.7f, 0.7f, 0.7f);
            gl.MatrixMode(OpenGL.GL_MODELVIEW);
            gl.Rotate(0f, -180f, 0f);
            disk.Render(gl, SharpGL.SceneGraph.Core.RenderMode.Render);

            disk.NormalGeneration  = SharpGL.SceneGraph.Quadrics.Normals.Smooth;
            disk.NormalOrientation = Orientation.Outside;

            gl.PopMatrix();

            gl.FrontFace(OpenGL.GL_CCW);

            gl.PushMatrix();
            gl.Translate(0f, -7f, 0f);

            gl.BindTexture(OpenGL.GL_TEXTURE_2D,
                           m_textures[(int)TextureObjects.Concrete]);


            gl.MatrixMode(OpenGL.GL_TEXTURE);
            gl.LoadIdentity();
            gl.Scale(1.4f, 1.4f, 1.4f);
            gl.MatrixMode(OpenGL.GL_MODELVIEW);

            gl.Begin(OpenGL.GL_QUADS);

            //gl.Color(0.9f, 0.9f, 0.9f);
            gl.Normal(0f, 1f, 0f);
            gl.TexCoord(1.0f, 1.0f);
            gl.Vertex(50, 0, 50);
            gl.TexCoord(1.0f, 0.0f);
            gl.Vertex(50, 0, -50);
            gl.TexCoord(0.0f, 0.0f);
            gl.Vertex(-50, 0, -50);
            gl.TexCoord(0.0f, 1.0f);
            gl.Vertex(-50, 0, 50);

            gl.End();

            gl.PopMatrix();


            //gl.Enable(OpenGL.GL_TEXTURE_2D);
            // gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Roses]);
            //  gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_ADD);
            gl.PushMatrix();

            gl.Translate(-20f, 0f, -7f);
            if (kotrljanje)
            {
                gl.Translate(pomeraj, 0f, 0f);
                gl.Rotate(0f, 0f, ugaoKotrljanja);
            }
            if (propadanje)
            {
                gl.Translate(0f, spustanje, 0f);
            }

            gl.Translate(0f, blagoPodizanjeBureta, 0f);

            gl.Scale(1, skaliranjeFaktor, 1);

            // gl.Scale(1,1 , skaliranjeFaktor);

            //if (skaliranjeFaktor != 1)
            //{
            //    float centarDrzaca = 10f / 2f;
            //    Console.WriteLine(centarDrzaca);
            //    float NoviCentar = (skaliranjeFaktor * 10f )/ 2f;
            //    Console.WriteLine(NoviCentar);
            //    float pomerajBuretaNakonSkaliranja = centarDrzaca - NoviCentar;
            //    Console.WriteLine(pomerajBuretaNakonSkaliranja);
            //    gl.Translate(0f, 0f, pomerajBuretaNakonSkaliranja);
            //}

            gl.Rotate(0f, 0f, -90f);
            gl.Rotate(90f, 0f, 0f);



            m_scene.Draw();
            gl.PopMatrix();


            gl.PushMatrix();

            // (clipping) prozora u fizički prozor
            //aplikacije – mapiranje logičkog koordinatnog sistema u fizički
            gl.Viewport(m_width / 2, m_height / 2, m_width / 2, m_height / 2); //X,Y,W,H

            gl.MatrixMode(OpenGL.GL_PROJECTION);                               //matrica definiše vidljivi volumen, kao i tip projekcije scene na ekran (ortogonalna ili perspektiva)
            gl.LoadIdentity();
            gl.Ortho2D(-15, 15, -15, 15);                                      //left, right – min/maks po x-osi, bottom, top – min / maks po y-osi,definiše „2D“ projekciju.

            gl.MatrixMode(OpenGL.GL_MODELVIEW);                                //Izbor matrice nad kojom se vrše transformacije
            gl.LoadIdentity();
            gl.Color(1f, 1f, 0f);


            gl.PushMatrix();
            gl.Translate(3f, -10f, 0f);
            gl.DrawText3D("Arial", 14f, 1f, 0.1f, "Predmet: Racunarska grafika");
            gl.PopMatrix();

            gl.PushMatrix();
            gl.Translate(3f, -11f, 0f);
            gl.DrawText3D("Arial", 14f, 1f, 0.1f, "Sk.god: 2019/20.");
            gl.PopMatrix();

            gl.PushMatrix();
            gl.Translate(3f, -12f, 0f);
            gl.DrawText3D("Arial", 14f, 1f, 0.1f, "Ime: Tamara");
            gl.PopMatrix();

            gl.PushMatrix();
            gl.Translate(3f, -13f, 0f);
            gl.DrawText3D("Arial", 14f, 1f, 0.1f, "Prezime: Lazarevic");
            gl.PopMatrix();

            gl.PushMatrix();
            gl.Translate(3f, -14f, 0f);
            gl.DrawText3D("Arial", 14f, 1f, 0.1f, "Sifra zad: 13.2");
            gl.PopMatrix();


            gl.PopMatrix();

            gl.PopMatrix();


            gl.PopMatrix();
            gl.Viewport(0, 0, m_width, m_height);
            gl.MatrixMode(OpenGL.GL_PROJECTION);
            gl.LoadIdentity();
            gl.Perspective(60f, (double)m_width / m_height, 1f, 20000f);
            gl.MatrixMode(OpenGL.GL_MODELVIEW);
            gl.LoadIdentity();


            // Oznaci kraj iscrtavanja
            gl.Flush();
        }
コード例 #23
0
        /// <summary>
        ///  Iscrtavanje OpenGL kontrole.
        /// </summary>
        public void Draw(OpenGL gl)
        {
            // Ocisti sadrzaj kolor bafera i bafera dubine
            gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);

            // Sacuvaj stanje ModelView matrice i primeni transformacije
            gl.PushMatrix();
            gl.Translate(this.translateX, this.translateY, -m_sceneDistance);     //Udalji se od scene po z osi
            gl.Rotate(m_xRotation, 1.0f, 0.0f, 0.0f);
            gl.Rotate(m_yRotation, 0.0f, 1.0f, 0.0f);

            gl.LookAt(0, 0, m_sceneDistance,
                      0, 0, 0,
                      0, 1, 0);

            #region Tackasto osvetljenje
            gl.PushMatrix();
            float[] pos = new float[] { 0.0f, 90.0f, 90.0f, 1.0f };
            gl.Color(0.4f, 0.3f, 0.0f);
            gl.Light(OpenGL.GL_LIGHT0, OpenGL.GL_POSITION, pos);
            gl.Translate(pos[0], pos[1], pos[2]);
            sphereLamp.Material.Bind(gl);
            sphereLamp.Render(gl, RenderMode.Render);
            gl.PopMatrix();
            #endregion

            #region Koordinatni pocetak
            gl.PushMatrix();
            gl.PointSize(5.0f);
            gl.Begin(OpenGL.GL_POINTS);
            gl.Color(0.0f, 1.0f, 0.0f);
            gl.Vertex(0.0f, 0.0f, 0.0f);
            gl.End();
            gl.PopMatrix();
            #endregion

            #region Pod
            gl.PushMatrix();
            gl.Enable(OpenGL.GL_TEXTURE_2D);

            //Stavka 5
            gl.MatrixMode(OpenGL.GL_TEXTURE);
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Floor]);
            gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_MODULATE);
            gl.LoadIdentity();
            gl.Scale(5, 5, 5);
            gl.MatrixMode(OpenGL.GL_MODELVIEW);

            gl.Begin(OpenGL.GL_QUADS);
            gl.Color(1.0f, 1.0f, 1.0f);
            gl.Normal(0f, 1f, 0f);
            gl.TexCoord(1f, 1f);
            gl.Vertex(-60.0f, -60.0f, 0.0f);
            gl.TexCoord(0f, 1f);
            gl.Vertex(-60.0f, -60.0f, 150.0f);
            gl.TexCoord(0f, 0f);
            gl.Vertex(90.0f, -60.0f, 150.0f);
            gl.TexCoord(1f, 0f);
            gl.Vertex(90.0f, -60.0f, 0.0f);
            gl.End();

            gl.MatrixMode(OpenGL.GL_TEXTURE);
            gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_MODULATE);
            gl.LoadIdentity();
            gl.Scale(1, 1, 1);
            gl.MatrixMode(OpenGL.GL_MODELVIEW);

            gl.Disable(OpenGL.GL_TEXTURE_2D);
            gl.PopMatrix();
            #endregion

            #region Zidovi
            gl.PushMatrix();
            gl.Enable(OpenGL.GL_TEXTURE_2D);
            //for (float z = 60.0f; z >= 0.0f; z -= 10.0f)
            //{
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Brick]);

            gl.Begin(OpenGL.GL_QUADS);
            //Zadnji
            gl.Normal(0f, 0f, 1f);
            gl.TexCoord(0.0f, 1.0f);
            gl.Vertex(-60.0f, 90.0f, 0.0f);       //gornja leva
            gl.TexCoord(0.0f, 0.0f);
            gl.Vertex(-60.0f, -60.0f, 0.0f);      //donja leva
            gl.TexCoord(1.0f, 0.0f);
            gl.Vertex(90.0f, -60.0f, 0.0f);       //donja desna
            gl.TexCoord(1.0f, 1.0f);
            gl.Vertex(90.0f, 90.0f, 0.0f);        //gornja desna
            gl.End();

            gl.Begin(OpenGL.GL_QUADS);
            //Desni
            gl.Normal(-1f, 0f, 0f);
            gl.TexCoord(1.0f, 1.0f);
            gl.Vertex(90.0f, 90.0f, 0.0f);          //gornja leva
            gl.TexCoord(1.0f, 0.0f);
            gl.Vertex(90.0f, -60.0f, 0.0f);         //donja leva
            gl.TexCoord(0.0f, 0.0f);
            gl.Vertex(90.0f, -60.0f, 150.0f);       //donja desna
            gl.TexCoord(0.0f, 1.0f);
            gl.Vertex(90.0f, 90.0f, 150.0f);        //gornja desna
            gl.End();

            gl.Begin(OpenGL.GL_QUADS);
            //Prednji
            gl.Normal(0f, 0f, -1f);
            gl.TexCoord(0.0f, 1.0f);
            gl.Vertex(90.0f, 90.0f, 150.0f);        //gornja leva
            gl.TexCoord(0.0f, 0.0f);
            gl.Vertex(90.0f, -60.0f, 150.0f);       //donja leva
            gl.TexCoord(1.0f, 0.0f);
            gl.Vertex(-60.0f, -60.0f, 150.0f);      // donja desna
            gl.TexCoord(1.0f, 1.0f);
            gl.Vertex(-60.0f, 90.0f, 150.0f);       //gornja desna
            gl.End();

            gl.Begin(OpenGL.GL_QUADS);
            //Levi
            gl.Normal(1f, 0f, 0f);
            gl.TexCoord(1.0f, 1.0f);
            gl.Vertex(-60.0f, 90.0f, 150.0f);       //gornja leva
            gl.TexCoord(1.0f, 0.0f);
            gl.Vertex(-60.0f, -60.0f, 150.0f);      // donja leva
            gl.TexCoord(0.0f, 0.0f);
            gl.Vertex(-60.0f, -60.0f, 0.0f);
            gl.TexCoord(0.0f, 1.0f);
            gl.Vertex(-60.0f, 90.0f, 0.0f);
            gl.End();
            //}
            gl.Disable(OpenGL.GL_TEXTURE_2D);
            gl.PopMatrix();
            #endregion

            #region Plafon
            gl.PushMatrix();
            gl.Begin(OpenGL.GL_QUADS);
            gl.Color(1.0f, 1.0f, 1.0f);
            gl.Vertex(-60.0f, 90.0f, 150.0f);
            gl.Vertex(-60.0f, 90.0f, 0.0f);
            gl.Vertex(90.0f, 90.0f, 0.0f);
            gl.Vertex(90.0f, 90.0f, 150.0f);
            gl.End();
            gl.PopMatrix();
            #endregion

            #region Postolje
            gl.PushMatrix();
            gl.Enable(OpenGL.GL_TEXTURE_2D);
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Floor]);
            gl.Scale(20.0f, 30.0f, 2f);
            gl.Translate(0.0f, 0.0f, 1.0f);
            Cube postolje = new Cube();
            postolje.Render(gl, SharpGL.SceneGraph.Core.RenderMode.Render);
            gl.Disable(OpenGL.GL_TEXTURE_2D);
            gl.PopMatrix();
            #endregion

            #region Pikado tabla
            gl.PushMatrix();
            gl.Enable(OpenGL.GL_TEXTURE_2D);
            gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_MODULATE);
            gl.Scale(0.5f * this.m_dartboardScale, 0.6f * this.m_dartboardScale, 1.0f);
            //gl.Translate(0.0f, 15.0f, 4.0f);
            gl.Translate(0.0f, 0.0f, 4.0f);
            m_scene.Draw();
            gl.Disable(OpenGL.GL_TEXTURE_2D);
            gl.PopMatrix();
            #endregion

            #region Strelice
            //Prva
            gl.PushMatrix();
            gl.Enable(OpenGL.GL_TEXTURE_2D);
            gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_MODULATE);
            gl.Scale(scaleDarts, scaleDarts, scaleDarts);
            gl.Translate(0.0f + this.m_throwDart1_x, 5.0f + this.m_throwDart1_y, 5.0f + this.m_throwDart1_z);
            m_scene2.Draw();
            gl.Disable(OpenGL.GL_TEXTURE_2D);
            gl.PopMatrix();

            //Druga
            gl.PushMatrix();
            gl.Enable(OpenGL.GL_TEXTURE_2D);
            gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_MODULATE);
            gl.Scale(scaleDarts, scaleDarts, scaleDarts);
            gl.Translate(0.0f + this.m_throwDart2_x, 10.0f + this.m_throwDart2_y, 5.0f + this.m_throwDart2_z);
            m_scene2.Draw();
            gl.Disable(OpenGL.GL_TEXTURE_2D);
            gl.PopMatrix();

            //Treca
            gl.PushMatrix();
            gl.Enable(OpenGL.GL_TEXTURE_2D);
            gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_MODULATE);
            gl.Scale(scaleDarts, scaleDarts, scaleDarts);
            gl.Translate(0.0f, 0.0f, 5.0f + this.m_throwDart3_z);
            m_scene2.Draw();
            gl.Disable(OpenGL.GL_TEXTURE_2D);
            gl.PopMatrix();
            #endregion

            #region Slova
            gl.PushMatrix();
            gl.Viewport(m_width / 2, 0, m_width / 2, m_height / 2);     //donji desni ugao
            gl.DrawText3D("Arial Bold", 14, 0, 0, "");
            gl.DrawText(sirina - 220, 100, 1.0f, 0.0f, 0.0f, "Arial Bold", 14, "Predmet: Racunarska grafika");
            gl.DrawText(sirina - 220, 80, 1.0f, 0.0f, 0.0f, "Arial Bold", 14, "Sk.god: 2019/20.");
            gl.DrawText(sirina - 220, 60, 1.0f, 0.0f, 0.0f, "Arial Bold", 14, "Ime: Ana");
            gl.DrawText(sirina - 220, 40, 1.0f, 0.0f, 0.0f, "Arial Bold", 14, "Prezime: Svitlica");
            gl.DrawText(sirina - 220, 20, 1.0f, 0.0f, 0.0f, "Arial Bold", 14, "Sifra zad: 3.2");
            gl.PopMatrix();
            #endregion

            #region Reflektor
            float[] light1pos     = new float[] { m_spotPosition1[0], m_spotPosition1[1], m_spotPosition1[2], 1.0f };
            float[] light1diffuse = new float[] { 1.0f, 1.0f, 1.0f, 1.0f };
            float[] light1ambient = new float[] { ReflectorAmbientRed, ReflectorAmbientGreen, ReflectorAmbientBlue, 1.0f };

            gl.Light(OpenGL.GL_LIGHT1, OpenGL.GL_POSITION, light1pos);
            gl.Light(OpenGL.GL_LIGHT1, OpenGL.GL_AMBIENT, light1ambient);
            gl.Light(OpenGL.GL_LIGHT1, OpenGL.GL_DIFFUSE, light1diffuse);

            gl.Translate(m_spotPosition1[0], m_spotPosition1[1], m_spotPosition1[2]);
            //sijalica.Material.Emission = Color.Red;
            sijalica.Material.Bind(gl);
            sijalica.Render(gl, RenderMode.Render);
            gl.PopMatrix();
            #endregion

            gl.PopMatrix();
            // Oznaci kraj iscrtavanja
            gl.Flush();
        }
コード例 #24
0
        /// <summary>
        ///  Iscrtavanje OpenGL kontrole.
        /// </summary>
        public void Draw(OpenGL gl)
        {
            gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);
            gl.Enable(OpenGL.GL_DEPTH_TEST);
            gl.Enable(OpenGL.GL_CULL_FACE);
            gl.LoadIdentity();
            gl.PushMatrix();
            gl.Translate(-60f, -100f, -m_sceneDistance);
            gl.Rotate(m_xRotation, 1.0f, 0.0f, 0.0f);
            gl.Rotate(m_yRotation, 0.0f, 1.0f, 0.0f);
            gl.Rotate(m_zRotation, 0.0f, 0.0f, 1.0f);

            gl.Viewport(0, 0, m_width, m_height);
            // gl.Scale(10f, 10f, 10f);
            //gl.PopMatrix();

            gl.PushMatrix();                //pROBAA sa gridom
            gl.Translate(0f, 100f, 0f);
            gl.Scale(92f, 72f, 0f);
            Grid mreza = new Grid();

            mreza.Render(gl, RenderMode.Design);
            gl.PopMatrix();

            //gl.PushMatrix();        //Ima na pocetku push
            gl.Rotate(-90f, 0f, 180f);                      //iscrtavanje modela
            m_scene2.Draw();
            gl.Color(1f, 0f, 0f);


            gl.Translate(-60f, -20f, 260f);
            m_scene.Draw();

            // gl.Scale(-10f, -10f, -10f);


            gl.Rotate(-90f, 0f, 0f);
            Cube cube = new Cube();                         //prepreke

            gl.Color(1f, 0.4f, 0.1f);
            // gl.Translate(-130f, -6000f, 0f);
            gl.Translate(-130f, -580f, 0f);
            gl.Scale(4f, 4f, 4f);
            for (int i = 0; i < 62; i++)
            {
                cube.Render(gl, SharpGL.SceneGraph.Core.RenderMode.Render);
                gl.Translate(0.0f, 6.0f, 0f);
            }

            gl.Translate(80f, -372.0f, 0.0f);
            for (int i = 0; i < 62; i++)
            {
                cube.Render(gl, SharpGL.SceneGraph.Core.RenderMode.Render);
                gl.Translate(0.0f, 6f, 0f);
            }

            gl.Color(0.4f, 0.4f, 0.4f);
            gl.Translate(0f, -480f, -1f);
            gl.Begin(OpenGL.GL_QUADS);
            gl.Vertex(200f, 100f);
            gl.Vertex(200f, 480f);
            gl.Vertex(-250f, 480f);
            gl.Vertex(-250f, 100f);
            gl.End();

            gl.Translate(0f, 0f, 0.1f);
            gl.Begin(OpenGL.GL_QUADS);
            gl.Color(0.7f, 0.7f, 0.7f);
            gl.Vertex(0f, 100f);
            gl.Vertex(0f, 480f);
            gl.Vertex(-80f, 480f);
            gl.Vertex(-80f, 100f);
            gl.End();

            gl.Viewport(m_width * 3 / 4, 0, m_width / 2, m_height / 2);   // Predefinisan ViewPort ....
            gl.Color(0f, 1f, 0f);
            gl.DrawText(10, 214, 0.5f, 1f, 1f, "Arial", 14, "Predmet:Racunarska grafika");
            gl.DrawText(10, 174, 0.5f, 1f, 1f, "Arial", 14, "Sk.god: 2017/18");
            gl.DrawText(10, 134, 0.5f, 1f, 1f, "Arial", 14, "Ime: Dejan");
            gl.DrawText(10, 94, 0.5f, 1f, 1f, "Arial", 14, "Prezme: Stojkic");
            gl.DrawText(10, 54, 0.5f, 1f, 1f, "Arial", 14, "Sifra zad: 2.1");

            gl.PopMatrix();
            gl.Flush();
        }
コード例 #25
0
        /// <summary>
        ///  Iscrtavanje OpenGL kontrole.
        /// </summary>
        public void Draw(OpenGL gl)
        {
            if (shooting)
            {
                drawShooting(gl);
                return;
            }

            if (count >= 50)
            {
                dole = true;
                gore = false;
            }
            if (count <= 0)
            {
                gore = true;
                dole = false;
            }
            if (zoom >= 600)
            {
                zoom = 600;
            }
            if (zoom <= -300)
            {
                zoom = -300;
            }
            if (m_xRotation <= -20)
            {
                m_xRotation = -17;
            }
            else if (m_xRotation >= 50)
            {
                m_xRotation = 50;
            }
            gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);
            gl.MatrixMode(OpenGL.GL_PROJECTION);      // selektuj Projection Matrix

            gl.LoadIdentity();
            gl.Perspective(50.0, (double)m_width / (double)m_height, 0.5, 1500.0);
            gl.LookAt(0f, 0f, 200f, 0f, 0f, -400, 0f, 1f, 0f);

            // Sacuvaj stanje modelview matrice i primeni transformacije
            gl.MatrixMode(OpenGL.GL_MODELVIEW);
            gl.PushMatrix();

            gl.PushMatrix();


            gl.Translate(0, 0, zoom);

            gl.Rotate(m_xRotation, 1.0f, 0.0f, 0.0f);
            gl.Rotate(m_yRotation, 0.0f, 1.0f, 0.0f);

            SetupLighting(gl);
            gl.PushMatrix();

            gl.Viewport(0, 0, m_width, m_height);

            gl.PushMatrix();

            //kamera

            #region PODLOGA
            gl.PushMatrix();
            gl.Translate(0.0f, 0f, 0f);
            gl.Color(0.42f, 0.81f, 0.67f);
            //da li treba ovde da se postavi za normalizaciju, ili u inicijalizaciji
            gl.Enable(OpenGL.GL_NORMALIZE);

            gl.MatrixMode(OpenGL.GL_TEXTURE);
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Grass]);
            gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_MODULATE);

            gl.LoadIdentity();
            gl.Scale(10, 10, 10);
            gl.MatrixMode(OpenGL.GL_MODELVIEW);

            gl.Begin(OpenGL.GL_QUADS);
            gl.TexCoord(0.0f, 0.0f); gl.Vertex4f(600f, -200f, 1000, 1);
            gl.TexCoord(0.0f, 1.0f); gl.Vertex4f(-600f, -200f, 1000, 1);
            gl.TexCoord(1.0f, 1.0f); gl.Vertex4f(-600f, -200f, -1200, 1);
            gl.TexCoord(1.0f, 0.0f); gl.Vertex4f(600f, -200f, -1200, 1);
            gl.End();
            gl.PopMatrix();
            #endregion
            #region MODEL
            gl.PushMatrix();
            gl.Translate(10.0f, (-191 + scaleBall / 2) + count, -300);
            if (gore)
            {
                count += 3;
            }
            if (dole)
            {
                count -= 3;
            }
            rotateBall += rotateBall0;
            gl.Rotate(rotateBall, 0, 1, 0);
            gl.Color(1f, 1f, 1f);
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Ball]);
            gl.Scale(scaleBall, scaleBall, scaleBall);
            m_scene.Draw();

            gl.PopMatrix();
            #endregion
            #region GOL
            //levo

            gl.PushMatrix();
            gl.Translate(-180f, -200f, -600);
            gl.Scale(5, 5, 5);
            gl.Rotate(90, 0.0f, 1.0f, 0.0f);
            gl.Rotate(-90, 1.0f, 0.0f, 0.0f);
            gl.Color(0.5f, 0.5f, 0.5f);

            Cylinder cil1 = new Cylinder();
            cil1.Slices        = 50;
            cil1.Height        = 40;
            cil1.BaseRadius    = 2;
            cil1.TopRadius     = 2;
            cil1.TextureCoords = true;
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Plastic]);
            gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_ADD);
            cil1.CreateInContext(gl);
            cil1.Render(gl, RenderMode.Render);
            gl.PopMatrix();

            //desno
            gl.PushMatrix();
            gl.Translate(180f, -200, -600);
            gl.Scale(5, 5, 5);
            gl.Rotate(90, 0.0f, 1.0f, 0.0f);
            gl.Rotate(-90, 1.0f, 0.0f, 0.0f);
            gl.Color(0.5f, 0.5f, 0.5f);

            Cylinder cil2 = new Cylinder();
            cil2.Slices        = 50;
            cil2.Height        = 40;
            cil2.BaseRadius    = 2;
            cil2.TopRadius     = 2;
            cil2.TextureCoords = true;
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Plastic]);
            gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_ADD);
            cil2.CreateInContext(gl);
            cil2.Render(gl, RenderMode.Render);
            gl.PopMatrix();

            //gore
            gl.PushMatrix();
            gl.Translate(-192f, 0f, -600);
            gl.Scale(5, 5, 5);
            gl.Rotate(90, 0.0f, 1.0f, 0.0f);
            gl.Color(0.5f, 0.5f, 0.5f);

            Cylinder cil3 = new Cylinder();
            cil3.Height        = 76.8;
            cil3.Slices        = 50;
            cil3.BaseRadius    = 2;
            cil3.TopRadius     = 2;
            cil3.TextureCoords = true;
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Plastic]);
            gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_ADD);
            cil3.CreateInContext(gl);
            cil3.Render(gl, RenderMode.Render);
            gl.PopMatrix();
            //iza levo dole
            gl.PushMatrix();
            gl.Translate(-180f, -190f, -600);
            gl.Scale(5, 5, 5);
            gl.Rotate(180, 0.0f, 1.0f, 0.0f);
            gl.Color(0.5f, 0.5f, 0.5f);

            Cylinder cil4 = new Cylinder();
            cil4.Height        = 20;
            cil4.Slices        = 50;
            cil4.BaseRadius    = 2;
            cil4.TopRadius     = 2;
            cil4.TextureCoords = true;
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Plastic]);
            gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_ADD);
            cil4.CreateInContext(gl);
            cil4.Render(gl, RenderMode.Render);
            gl.PopMatrix();
            //iza desno dole
            gl.PushMatrix();
            gl.Translate(180f, -190f, -600);
            gl.Scale(5, 5, 5);
            gl.Rotate(180, 0.0f, 1.0f, 0.0f);
            gl.Color(0.5f, 0.5f, 0.5f);

            Cylinder cil5 = new Cylinder();
            cil5.Height        = 20;
            cil5.Slices        = 50;
            cil5.BaseRadius    = 2;
            cil5.TopRadius     = 2;
            cil5.TextureCoords = true;
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Plastic]);
            gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_ADD);
            cil5.CreateInContext(gl);
            cil5.Render(gl, RenderMode.Render);
            gl.PopMatrix();
            //iza dole
            gl.PushMatrix();
            gl.Translate(-190f, -195f, -700);
            gl.Scale(5, 5, 5);
            gl.Rotate(90, 0.0f, 1.0f, 0.0f);
            gl.Color(0.5f, 0.5f, 0.5f);

            Cylinder cil6 = new Cylinder();
            cil6.Height        = 74.5;
            cil6.Slices        = 50;
            cil6.BaseRadius    = 1;
            cil6.TopRadius     = 1;
            cil6.TextureCoords = true;
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Plastic]);
            gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_ADD);
            cil6.CreateInContext(gl);
            cil6.Render(gl, RenderMode.Render);
            gl.PopMatrix();
            //iza gore
            gl.PushMatrix();
            gl.Translate(-190f, -25f, -700);
            gl.Scale(5, 5, 5);
            gl.Rotate(90, 0.0f, 1.0f, 0.0f);
            gl.Color(0.5f, 0.5f, 0.5f);

            Cylinder cil11 = new Cylinder();
            cil11.Height        = 74.5;
            cil11.Slices        = 50;
            cil11.BaseRadius    = 1;
            cil11.TopRadius     = 1;
            cil11.TextureCoords = true;
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Plastic]);
            gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_ADD);
            cil11.CreateInContext(gl);
            cil11.Render(gl, RenderMode.Render);
            gl.PopMatrix();
            //levo iza dole
            gl.PushMatrix();
            gl.Translate(-180f, -200f, -690);
            gl.Scale(5, 5, 5);
            gl.Rotate(90, 0.0f, 1.0f, 0.0f);
            gl.Rotate(-90, 1.0f, 0.0f, 0.0f);
            gl.Color(0.5f, 0.5f, 0.5f);

            Cylinder cil7 = new Cylinder();
            cil7.Slices        = 50;
            cil7.Height        = 35;
            cil7.BaseRadius    = 1;
            cil7.TopRadius     = 1;
            cil7.TextureCoords = true;
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Plastic]);
            gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_ADD);
            cil7.CreateInContext(gl);
            cil7.Render(gl, RenderMode.Render);
            gl.PopMatrix();
            //desno iza dole
            gl.PushMatrix();
            gl.Translate(180f, -200f, -690);
            gl.Scale(5, 5, 5);
            gl.Rotate(90, 0.0f, 1.0f, 0.0f);
            gl.Rotate(-90, 1.0f, 0.0f, 0.0f);
            gl.Color(0.5f, 0.5f, 0.5f);

            Cylinder cil8 = new Cylinder();
            cil8.Slices        = 50;
            cil8.Height        = 35;
            cil8.BaseRadius    = 1;
            cil8.TopRadius     = 1;
            cil8.TextureCoords = true;
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Plastic]);
            gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_ADD);
            cil8.CreateInContext(gl);
            cil8.Render(gl, RenderMode.Render);
            gl.PopMatrix();

            //desno iza gore
            gl.PushMatrix();
            gl.Translate(180f, 0, -600);
            gl.Scale(5, 5, 5);
            gl.Rotate(90, 0.0f, 1.0f, 0.0f);
            gl.Rotate(90, 1.0f, 0.0f, 0.0f);
            gl.Rotate(75, 0.0f, 1.0f, 0.0f);
            gl.Color(0.5f, 0.5f, 0.5f);

            Cylinder cil9 = new Cylinder();
            cil9.Slices        = 50;
            cil9.Height        = 22;
            cil9.BaseRadius    = 1;
            cil9.TopRadius     = 1;
            cil9.TextureCoords = true;
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Plastic]);
            gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_ADD);
            cil9.CreateInContext(gl);
            cil9.Render(gl, RenderMode.Render);
            gl.PopMatrix();

            //desno iza gore
            gl.PushMatrix();
            gl.Translate(-180f, 0, -600);
            gl.Scale(5, 5, 5);
            gl.Rotate(90, 0.0f, 1.0f, 0.0f);
            gl.Rotate(90, 1.0f, 0.0f, 0.0f);
            gl.Rotate(75, 0.0f, 1.0f, 0.0f);
            gl.Color(0.5f, 0.5f, 0.5f);

            Cylinder cil10 = new Cylinder();
            cil10.Slices        = 50;
            cil10.Height        = 22;
            cil10.BaseRadius    = 1;
            cil10.TopRadius     = 1;
            cil10.TextureCoords = true;
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Plastic]);
            gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_ADD);
            cil10.CreateInContext(gl);
            cil10.Render(gl, RenderMode.Render);
            gl.PopMatrix();
            gl.PopMatrix();
            #endregion
            #region TEKST
            gl.PushMatrix();
            gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_MODULATE);
            gl.Color(0, 0, 0);
            gl.Viewport(m_width - 200, m_height - 150, 200, 150);
            gl.MatrixMode(OpenGL.GL_PROJECTION);
            gl.LoadIdentity();
            gl.Ortho2D(-5.0, 10.0, 0, 6.0);
            gl.MatrixMode(OpenGL.GL_MODELVIEW);
            gl.LoadIdentity();
            gl.PushMatrix();
            gl.Color(0, 0, 0);
            String[] tekst = { "Predmet: Racunarska grafika", "Sk.god: 2017/18", "Ime: Nina", "Prezime: Miladinovic", "Sifra zad: 9.2" };
            for (int i = 0; i < tekst.Length; i++)
            {
                gl.PushMatrix();
                gl.Translate(-5.0f, 5.0f - i, 0f);
                gl.DrawText3D("Arial Bold", 10f, 1f, 0.1f, tekst[i]);
                gl.PopMatrix();
            }
            gl.PopMatrix();
            gl.PopMatrix();

            #endregion

            gl.PopMatrix();
            gl.PopMatrix();
            gl.PopMatrix();

            gl.Flush();
        }
コード例 #26
0
ファイル: World.cs プロジェクト: ivukasinovic/Fruits
        /// <summary>
        ///  Iscrtavanje OpenGL kontrole.
        /// </summary>
        public void Draw(OpenGL gl)
        {
            gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);
            gl.Enable(OpenGL.GL_DEPTH_TEST);
            gl.Viewport(0, 0, m_width, m_height);
            gl.ClearColor(0.2f, 0.2f, 0.2f, 1.0f);

            gl.Disable(OpenGL.GL_LIGHTING);
            gl.Disable(OpenGL.GL_TEXTURE_2D);
            WriteText2(gl);
            gl.Enable(OpenGL.GL_TEXTURE_2D);
            gl.Enable(OpenGL.GL_LIGHTING);

            gl.PushMatrix();

            gl.LookAt(0.0f, 0f, 100.0f, 0.0f, -1.0f, 0.0f, 0.0f, 1.0f, 0.0f);
            gl.Translate(0.0f, 0.0f, -m_sceneDistance);

            gl.Scale(10f, 10f, 10f);
            gl.Rotate(m_xRotation, 1.0f, 0.0f, 0.0f);
            gl.Rotate(m_yRotation, 0.0f, 1.0f, 0.0f);
            gl.Rotate(m_zRotation, 0.0f, 0.0f, 1.0f);

            gl.Translate(40f, 200f, 0.0f);
            //reflektor
            SetupLighting1(gl);


            //iscrtavanje 1/2jabuke
            //nacin stapanja teksture sa modelom ( sabira teksel sa bojom materijala)
            gl.Color(0.0f, 0.1f, 0.0f, 1.0f);
            gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_ADD);
            gl.PushMatrix();
            gl.Rotate(0.0f + leftFruitRotation, 0.0f, 0.0f);
            gl.PushMatrix();
            gl.Translate(35, -80f, -40f + fruitHeight);
            gl.Rotate(90f - fruitRotation, 0.0f, 0.0f);
            gl.Scale(200f, 200f, 200f);
            m_scene.Draw();
            gl.PopMatrix();


            //iscrtavanje 2/2jabuke
            gl.PushMatrix();
            gl.Rotate(90f, 180f - fruitRotation, 0f);
            gl.Translate(50f, -40f + fruitHeight, -130f);
            gl.Scale(200f, 200f, 200f);
            m_scene.Draw();
            gl.PopMatrix();
            gl.PopMatrix();

            gl.PushMatrix();
            // gl.Rotate(0.0f, 0.0f + leftFruitRotation, 0.0f);
            //iscrtavanje narandza gore
            gl.PushMatrix();

            gl.Rotate(180f, 0f, 0f);
            gl.Translate(-125f, 137f, -50f - fruitHeight);
            gl.Scale(150f, 150f, 150f);
            m_scene2.Draw();
            gl.PopMatrix();
            //iscrtavanje narandza dole
            gl.PushMatrix();
            gl.Rotate(0f, 0f, 0f);
            gl.Translate(-125f, -258f, 12f + fruitHeight);
            gl.Scale(150f, 150f, 150f);
            m_scene2.Draw();
            gl.PopMatrix();
            gl.PopMatrix();
            gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_MODULATE);
            //postolja
            gl.PushMatrix();
            gl.Translate(-5.0f, -100.0f, 0.0f);
            gl.Color(0.0f, 0.7f, 0.0f);
            Cylinder cyl = new Cylinder
            {
                TopRadius  = 20f,
                BaseRadius = 20f,
                Height     = 20f + fruitHeight
            };

            cyl.CreateInContext(gl);
            gl.Normal(0.0f, 1.0f, 0.0f);
            cyl.Render(gl, RenderMode.Render);
            Disk disk = new Disk();

            disk.InnerRadius = 0f;
            disk.OuterRadius = 20f;
            disk.CreateInContext(gl);
            gl.Normal(0.0f, 1.0f, 0.0f);
            gl.Translate(0.0f, 0.0f, 20f + fruitHeight);
            disk.Render(gl, RenderMode.Render);
            gl.Normal(0.0f, 1.0f, 0.0f);
            gl.Translate(-150f, -100f, -20f - fruitHeight);
            cyl.Render(gl, RenderMode.Render);
            gl.Translate(0.0f, 0.0f, 20f + fruitHeight);
            gl.Normal(0.0f, 1.0f, 0.0f);
            disk.Render(gl, RenderMode.Render);
            gl.PopMatrix();


            //iscrtavanje podloge

            drawFloor(gl);



            //gl.Color(0.0f, 0.0f, 0.7f);

            //dole zid
            gl.PushMatrix();
            Cube wall = new Cube();

            gl.Translate(-45.0f, 150.0f, 10.0f);
            gl.Scale(200f, 5f, 10f);
            gl.Normal(0f, 1f, 0f);
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[0]);
            wall.Render(gl, RenderMode.Render);
            //skidanje tekstura
            gl.PopMatrix();
            //gore zid
            gl.PushMatrix();
            gl.Translate(-45.0f, 430.0f, 10.0f);
            gl.Scale(200f, 5f, 10f);
            wall.Render(gl, RenderMode.Render);
            gl.PopMatrix();
            //levo zid
            gl.PushMatrix();
            gl.Rotate(0.0f, 0.0f, 90.0f);
            gl.Translate(290.0f, 240.0f, 10.0f);
            gl.Scale(135f, 5f, 10f);
            wall.Render(gl, RenderMode.Render);
            gl.PopMatrix();
            //desni zid
            gl.PushMatrix();
            gl.Rotate(0.0f, 0.0f, 90.0f);
            gl.Translate(290.0f, -150.0f, 10.0f);
            gl.Scale(135f, 5f, 10f);
            wall.Render(gl, RenderMode.Render);
            gl.PopMatrix();

            //crtanje grid mreze
            gl.PushMatrix();
            gl.Translate(-50f, 250f, 0);
            gl.Scale(40f, 30f, 0f);
            Grid grid = new Grid();

            grid.Render(gl, RenderMode.Design);
            gl.PopMatrix();

            gl.PopMatrix();


            // Oznaci kraj iscrtavanja
            gl.Flush();
        }
コード例 #27
0
        /// <summary>
        ///  Iscrtavanje OpenGL kontrole.
        /// </summary>
        public void Draw(OpenGL gl)
        {
            String[] message = new string[]
            {
                "Predmet:  Racunarska grafika",
                "Sk.god:      2019/20",
                "Ime:         Igor",
                "Prezime:     Srajer",
                "Sifra zad:   11.1"
            };
            //--------------------------------------------------------------------------------------------
            gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);
            gl.Viewport(0, 0, m_width, m_height);
            gl.LoadIdentity();

            //Podesavanje kamere 25.0f, 43.0f, -50.0f -1000, -1000, 0
            gl.LookAt(0, 2500, -9000, 0, -300, 55, 0, 1, 0);

            gl.Translate(0.0f, -300.0f, -m_sceneDistance);
            gl.Rotate(m_xRotation, 1.0f, 1.0f, 0.0f);
            gl.Rotate(m_yRotation, 0.0f, 1.0f, 0.0f);
            gl.Scale(10.0f, 10.0f, 15.0f);
            gl.Enable(OpenGL.GL_POINT_SMOOTH);

            //restrikcija rotacije
            if (m_xRotation >= 40.0f)
            {
                m_xRotation = 40.0f;
            }

            if (m_xRotation <= -160.0f)
            {
                m_xRotation = -160.0f;
            }

            gl.PushMatrix();

            //animacija
            if (m_earthRotation >= 0)
            {
                if (m_earthRotation < 50)
                {
                    gl.Translate(0.0f, 0.0f, m_earthRotation);
                    m_earthRotation += 5;
                }
                else if (m_earthRotation >= 50 && m_earthRotation < 105)
                {
                    gl.Translate(0.0f, m_earthTranslation + visina, m_earthRotation);
                    m_earthTranslation += 19;
                    m_earthRotation    += 5;
                }
                else if (m_earthRotation >= 105 && m_earthRotation < 170)
                {
                    gl.Translate(0.0f, m_earthTranslation, m_earthRotation);
                    m_earthRotation += 5;
                }
                else if (m_earthRotation >= 170)
                {
                    System.Threading.Thread.Sleep(2000);
                    m_earthRotation    = -1;
                    m_earthTranslation = -1;
                    animation          = false;
                }
            }

            gl.Color(0.196078, 0.196078, 0.8);
            gl.Translate(25.0f, 43.0f, -50.0f);
            gl.Rotate(90.0f, 1.0f, 0.0f, 0.0f);
            gl.PushMatrix();
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Platforma]);
            gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_MODULATE);
            gl.Scale(1.0f, 1.0f, visina + 1);
            gl.Translate(0.0f, 0.0f, -visina * 14);
            m_scene.Draw();
            gl.PopMatrix();
            gl.PopMatrix();

            //stub
            gl.PushMatrix();
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Platforma]);
            gl.Color(0.55, 0.09, 0.09);
            DrawCylinder(gl);
            gl.PopMatrix();

            //postolje
            gl.PushMatrix();
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Postolje]);
            gl.Color(0.5, 1.5, 0.5);
            DrawPlatform(gl);
            DrawGround(gl);
            gl.PopMatrix();

            //stepenice 1
            gl.PushMatrix();
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Stairs]);
            gl.Color(0.137255, 0.419608, 0.556863);
            gl.Translate(10.0f, 0.0f, 0.0f);
            DrawStairs(gl);
            gl.PopMatrix();

            //stepenice 2
            gl.PushMatrix();
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Stairs]);
            gl.Translate(-45.0f, 0.0f, 0.0f);
            DrawStairs(gl);
            gl.PopMatrix();

            //stair fence 1
            gl.PushMatrix();
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Postolje]);
            gl.Color(0.59, 0.41, 0.31);
            gl.Translate(36.0f, 10.0f, -10.0f);
            gl.Rotate(14.0f, 1.0f, 0.0f, 0.0f);
            DrawStairFence(gl);
            gl.PopMatrix();

            //stair fence 2
            gl.PushMatrix();
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Postolje]);
            gl.Color(0.59, 0.41, 0.31);
            gl.Translate(-18.0f, 10.0f, -10.0f);
            gl.Rotate(14.0f, 1.0f, 0.0f, 0.0f);
            DrawStairFence(gl);
            gl.PopMatrix();

            //stair fence 3
            gl.PushMatrix();
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Postolje]);
            gl.Color(0.59, 0.41, 0.31);
            gl.Translate(-70.0f, 10.0f, -10.0f);
            gl.Rotate(14.0f, 1.0f, 0.0f, 0.0f);
            DrawStairFence(gl);
            gl.PopMatrix();


            //tekst
            gl.PushMatrix();
            SharpGL.FontBitmaps font = new FontBitmaps();
            for (int i = 0; i < message.Length; i++)
            {
                gl.Viewport(26 * m_width / 30, ((-i + 5) * m_height) / 30, m_width / 5, m_height / 5);
                font.DrawText(gl, 0, 0, 1.0f, 0.0f, 0.0f, "Verdana italic", 10.0f, message[i]);
            }


            gl.PopMatrix();
            gl.Viewport(0, 0, m_width, m_height);

            //oznaci kraj iscrtavanja
            gl.Flush();
        }
コード例 #28
0
        /// <summary>
        ///  Iscrtavanje OpenGL kontrole.
        /// </summary>
        public void Draw(OpenGL gl)
        {
            gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);
            gl.MatrixMode(OpenGL.GL_PROJECTION);

            gl.PushMatrix();

            gl.Viewport(0, 0, m_width, m_height);
            gl.MatrixMode(OpenGL.GL_MODELVIEW);

            gl.PushMatrix();

            gl.LoadIdentity();
            gl.LookAt(-300, 150, m_sceneDistance, 0, 0, 0, 0, 1, 0); //Pozicioniranje kamere (gore levo ne mnogo od podloge) (6)
            float[] pos = { 0, 120, 0, 1.0f };                       //STACIONARNO SVETLO
            gl.Light(OpenGL.GL_LIGHT0, OpenGL.GL_POSITION, pos);     //POZICIJA STACIONARNOG SVETLA


            gl.Rotate(m_xRotation, 1.0f, 0.0f, 0.0f);
            gl.Rotate(m_yRotation, 0.0f, 1.0f, 0.0f);

            #region Bure
            gl.PushMatrix();
            gl.Light(OpenGL.GL_LIGHT1, OpenGL.GL_SPOT_DIRECTION, new float[] { 0.0f, -1.0f, 0.0f }); //REFLETOR BACA SVETLO NA DOLE, ZASTO OVDE A NE U METODI Z ASVETLO? DA BI SE ROTACIJE PROMENILE I NA OVO

            float[] pos2 = { 200 + lightPositionX, 150, 0f, 1.0f };                                  //IZNAD BURETA I POSOTLJA, ALI SE DODAJE I VREDNOST SLAJDERA KOJI POMERA SVETLO (7)
            gl.Light(OpenGL.GL_LIGHT1, OpenGL.GL_POSITION, pos2);                                    //REFLEKTOR, POZICIJA
            float[] COLOR = { r, g, b };                                                             //VREDNOST SLAJDERA

            gl.Light(OpenGL.GL_LIGHT1, OpenGL.GL_AMBIENT, COLOR);                                    //SVE KOMPONENTE REFLEKTORSKOG IZVORA PODESI NA ONO STO SLADJERI POKAZUJU (7)
            gl.Light(OpenGL.GL_LIGHT0, OpenGL.GL_DIFFUSE, COLOR);
            gl.Light(OpenGL.GL_LIGHT1, OpenGL.GL_SPECULAR, COLOR);

            gl.Translate(200f + barrelX, 90 + barrelY + barrelY_Free, 0);
            gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_ADD); //EZIM STAPANJA ZA MODEL BURETA : ADD (10)
            gl.Scale(barrelScale, barrelScale, barrelScale);                             //UNIFORMNO SKLAIRANJE ZA PARAMETAR  SA SLAJDERA (7)
            gl.Translate(0, 13.575, 0);                                                  //DONJI DEO U KOORINATNI POCETAK
            gl.Rotate(0f, 0, barrelRotation);                                            //OKRENI ZBOG KOTRLJANJA, barrelRotation JE 0 KAD NEMA ANIMACIJE
            gl.Translate(0, -13.575, 0);                                                 //CENTAR U KOORDIANTNI POCETAK
            m_scene.Draw();
            gl.PopMatrix();
            #endregion

            gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_MODULATE);//DECAL ZA SVE OSTALE TEKSTURE

            #region Podloga
            gl.PushMatrix();

            gl.BindTexture(OpenGL.GL_TEXTURE_2D, textures[(int)TextureObjects.Concrete]); //Podloga od betona (5)
            gl.MatrixMode(OpenGL.GL_TEXTURE);
            gl.LoadIdentity();                                                            // prazna matrica (da se poniste prethodne)

            gl.Scale(6, 6, 6);
            gl.MatrixMode(OpenGL.GL_MODELVIEW);
            gl.Normal(0, 1, 0); // normala na podlogu (2)

            // gl.Translate(-400.0f, -60.0f, 0.0f);
            gl.Rotate(0, 0, 10);
            gl.Scale(55, 1, 55);

            gl.Begin(OpenGL.GL_QUADS);
            gl.Color(0.5f, 0.5f, 0.5f);

            gl.TexCoord(0f, 0f);
            gl.Vertex(-5f, 0.0f, -5f);
            gl.TexCoord(0f, 1f);
            gl.Vertex(-5.0f, 0.0f, 5.0f);
            gl.TexCoord(1f, 1f);
            gl.Vertex(5.0f, 0.0f, 5.0f);
            gl.TexCoord(1f, 0f);
            gl.Vertex(5.0f, 0.0f, -5.0f);
            gl.End();
            gl.PopMatrix();
            #endregion


            #region Rupa
            gl.PushMatrix();

            gl.BindTexture(OpenGL.GL_TEXTURE_2D, textures[(int)TextureObjects.Metal]); //IZABERI METAL
            gl.MatrixMode(OpenGL.GL_TEXTURE);
            gl.LoadIdentity();                                                         //UCITAJ PRAZNU TEXTURE MATRICU, DA SE PONISTE TRANSFORMACIJE OD RANIEJ AKO IH IMA
            gl.MatrixMode(OpenGL.GL_MODELVIEW);

            //gl.Translate(300f, -50f, 250f);
            gl.Translate(-200f, -35f, 0f);
            //gl.Scale(20f, 12f, -20f);
            gl.Rotate(-90, 1, 0, 0);
            gl.Rotate(-10, 0, 1, 0);

            Disk disk = new Disk();
            disk.TextureCoords    = true;
            disk.NormalGeneration = Normals.Smooth;
            disk.Loops            = 120;
            disk.Slices           = 30;
            disk.InnerRadius      = 0f;
            disk.OuterRadius      = 70;
            disk.CreateInContext(gl);
            disk.Render(gl, SharpGL.SceneGraph.Core.RenderMode.Render);

            gl.PopMatrix();
            #endregion

            #region Postolje
            gl.PushMatrix();
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, textures[(int)TextureObjects.Wood]); //IZABERI DRVO
            gl.MatrixMode(OpenGL.GL_TEXTURE);
            gl.LoadIdentity();                                                        //UCITAJ PRAZNU TEXTURE MATRICU, DA SE PONISTE TRANSFORMACIJE OD RANIEJ AKO IH IMA
            gl.MatrixMode(OpenGL.GL_MODELVIEW);
            gl.Translate(200, 20, 0);
            gl.Rotate(holderRotation, 0, 0, 1);//ROTIRANJE PRILIKOM ANIMACIJE, U SUPROTNOM JE holderRotation 0
            gl.Rotate(-90f, 0f, 0f);

            Cylinder cil = new Cylinder();
            cil.TextureCoords    = true;
            cil.NormalGeneration = Normals.Smooth;
            cil.BaseRadius       = 70;
            cil.Slices           = 4;
            cil.Height           = 80;
            cil.CreateInContext(gl);
            cil.Render(gl, SharpGL.SceneGraph.Core.RenderMode.Render);

            gl.PopMatrix();
            #endregion

            #region Tekst
            gl.PushMatrix();
            gl.Viewport(0, 0, m_width / 2, m_height / 2);     //donji desni ugao
            gl.DrawText3D("Helvetica", 14, 0, 0, "");
            gl.DrawText(Sirina_prozora - 250, 100, 1.0f, 1.0f, 0.0f, "Helvetica ", 14, "Predmet: Racunarska grafika");
            gl.DrawText(Sirina_prozora - 250, 80, 1.0f, 1.0f, 0.0f, "Helvetica", 14, "Sk.god:  2019/20.");
            gl.DrawText(Sirina_prozora - 250, 60, 1.0f, 1.0f, 0.0f, "Helvetica", 14, "Ime: Veljko");
            gl.DrawText(Sirina_prozora - 250, 40, 1.0f, 1.0f, 0.0f, "Helvetica", 14, "Prezime: Vukovic");
            gl.DrawText(Sirina_prozora - 250, 20, 1.0f, 1.0f, 0.0f, "Helvetica", 14, "Sifra zad: 13.1");
            gl.DrawText(Sirina_prozora - 250, 100, 1.0f, 1.0f, 0.0f, "Helvetica", 14, "_______________________");
            gl.DrawText(Sirina_prozora - 250, 80, 1.0f, 1.0f, 0.0f, "Helvetica", 14, "______________");
            gl.DrawText(Sirina_prozora - 250, 60, 1.0f, 1.0f, 0.0f, "Helvetica", 14, "________");
            gl.DrawText(Sirina_prozora - 250, 40, 1.0f, 1.0f, 0.0f, "Helvetica", 14, "______________");
            gl.DrawText(Sirina_prozora - 250, 20, 1.0f, 1.0f, 0.0f, "Helvetica", 14, "___________");
            gl.PopMatrix();
            #endregion


            gl.PopMatrix();
            // Oznaci kraj iscrtavanja
            gl.Flush();
        }
コード例 #29
0
        /// <summary>
        ///  Iscrtavanje OpenGL kontrole.
        /// </summary>
        public void Draw(OpenGL gl)
        {
            gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);
            // gl.Scale(3.5f, 3.5f, 3.5f);

            gl.PushMatrix();
            SetupLighting(gl);

            // gl.Translate(0.0f, 1.0f, -m_sceneDistance);
            gl.Translate(0.0f, 1.0f, m_sceneDistance);
            gl.Rotate(m_xRotation, 1.0f, 0.0f, 0.0f);
            gl.Rotate(m_yRotation, 0.0f, 1.0f, 0.0f);

            //faza 2 : tacka 6
            gl.LookAt(1.0f, 1.0f, 4.0f,
                      0.0f, 0.0f, 0.0f,
                      0.0f, 5.0f, 0.0f);


            //postolje
            gl.PushMatrix();
            gl.Disable(OpenGL.GL_TEXTURE_2D);
            gl.Translate(0.0f, visinaPodloge, 0.0f);
            gl.Rotate(180, 0, 0);
            cylinder.Height     = 1;
            cylinder.BaseRadius = 3.0f;
            cylinder.TopRadius  = 3.0f;
            gl.ClearColor(0.0f, 0.0f, 0.0f, 1.0f);
            gl.Color(0.2265625f, 0f, 0.0f);
            gl.Rotate(-90f, 0f, 0f);
            cylinder.CreateInContext(gl);
            gl.FrontFace(OpenGL.GL_CCW);
            cylinder.Render(gl, RenderMode.Render);

            //zatvara se postolje
            gl.PushMatrix();
            // gl.Translate(0.0f, 0.0f, 4.0f);
            gl.Rotate(0.0f, 180.0f, 0.0f);
            Disk disk = new Disk();

            gl.Color(0.2265625f, 0f, 0.0f);
            disk.InnerRadius = 0;
            disk.OuterRadius = 3.0f;
            disk.CreateInContext(gl);
            // faza 2 : tacka 5
            gl.FrontFace(OpenGL.GL_CCW);
            disk.Render(gl, RenderMode.Render);
            gl.PopMatrix();
            gl.Enable(OpenGL.GL_TEXTURE_2D);
            gl.PopMatrix();

            //sto
            gl.PushMatrix();
            gl.Translate(0.0f, visinaTable, 0.0f);
            gl.Scale(3.5f, 0.5f, 3.5f);
            gl.ClearColor(0.0f, 0.0f, 0.0f, 1.0f);
            gl.Color(0.30859375f, 0.1484375f, 0.07421875f);
            // faza 2 : tacka 4
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Wood]);
            gl.FrontFace(OpenGL.GL_CCW);
            cube.Render(gl, RenderMode.Render);
            gl.PopMatrix();

            gl.PushMatrix();
            Cube c = new Cube();

            gl.Translate(0.0f, -5.0f, 0.0f);
            gl.Scale(0.5f, visinaStola, 0.5f);
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Wood]);
            gl.FrontFace(OpenGL.GL_CCW);
            c.Render(gl, RenderMode.Render);
            gl.PopMatrix();


            //ono dole, hehe
            gl.PushMatrix();
            Cube s = new Cube();

            gl.Translate(0.0f, visinaPostolja, 0.0f);
            gl.Scale(3.5f, 0.4, 3.5f);
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Wood]);
            gl.FrontFace(OpenGL.GL_CCW);
            s.Render(gl, RenderMode.Render);
            gl.PopMatrix();

            //tepih?


            gl.PushMatrix();
            gl.Translate(5.0f, visinaTepiha, 5.0f);
            gl.Rotate(-90.0f, 180.0f, 0.0f);
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Carpet]);
            gl.Begin(OpenGL.GL_QUADS);
            gl.TexCoord(1.0f, 0.0f);
            gl.Vertex(0.0f, 0.0f);
            gl.TexCoord(1.0f, 1.0f);
            gl.Vertex(0.0f, 5.0f);
            gl.TexCoord(0.0f, 1.0f);
            gl.Vertex(5.0f, 5.0f);
            gl.TexCoord(0.0f, 0.0f);
            gl.Vertex(5.0f, 0.0f);
            gl.End();

            gl.Begin(OpenGL.GL_QUADS);
            gl.TexCoord(1.0f, 0.0f);
            gl.Vertex(0.0f, 5.0f);
            gl.TexCoord(1.0f, 1.0f);
            gl.Vertex(0.0f, 10.0f);
            gl.TexCoord(0.0f, 1.0f);
            gl.Vertex(5.0f, 10.0f);
            gl.TexCoord(0.0f, 0.0f);
            gl.Vertex(5.0f, 5.0f);
            gl.End();

            gl.Begin(OpenGL.GL_QUADS);
            gl.TexCoord(1.0f, 0.0f);
            gl.Vertex(5.0f, 5.0f);
            gl.TexCoord(1.0f, 1.0f);
            gl.Vertex(5.0f, 10.0f);
            gl.TexCoord(0.0f, 1.0f);
            gl.Vertex(10.0f, 10.0f);
            gl.TexCoord(0.0f, 0.0f);
            gl.Vertex(10.0f, 5.0f);
            gl.End();

            gl.Begin(OpenGL.GL_QUADS);
            gl.TexCoord(1.0f, 0.0f);
            gl.Vertex(5.0f, 0.0f);
            gl.TexCoord(1.0f, 1.0f);
            gl.Vertex(5.0f, 5.0f);
            gl.TexCoord(0.0f, 1.0f);
            gl.Vertex(10.0f, 5.0f);
            gl.TexCoord(0.0f, 0.0f);
            gl.Vertex(10.0f, 0.0f);
            gl.End();
            // gl.Enable(OpenGL.GL_CULL_FACE);
            gl.PopMatrix();

            gl.PushMatrix();
            gl.Disable(OpenGL.GL_TEXTURE_2D);
            gl.Translate(0.0f, visinaMikrotalasne, 0.0f);
            gl.Scale(scale_x, scale_x, scale_x);
            gl.FrontFace(OpenGL.GL_CCW);
            m_scene.Draw();
            gl.Enable(OpenGL.GL_TEXTURE_2D);
            gl.PopMatrix();

            // crtanje pljeskavice
            gl.PushMatrix();
            gl.Disable(OpenGL.GL_TEXTURE_2D);
            gl.Translate(hranaX, visinaHrane, hranaZ);
            //gl.Translate(5.0f, 0.0f, 0.0f);
            gl.Scale(scale_x, scale_x, scale_x);
            gl.PushMatrix();
            gl.Rotate(0.0f, rotacijaHrane, 0.0f);
            gl.PopMatrix();
            m_scene2.Draw();
            gl.Enable(OpenGL.GL_TEXTURE_2D);
            gl.PopMatrix();

            gl.PushMatrix();
            gl.Disable(OpenGL.GL_TEXTURE_2D);
            gl.Translate(vrataX, visinaVrati, vrataZ);
            gl.Rotate(0.0f, vrataY, 0.0f);
            gl.Scale(scale_x, scale_x, scale_x);
            m_scene_door.Draw();
            gl.Enable(OpenGL.GL_TEXTURE_2D);
            gl.PopMatrix();

            gl.PopMatrix();
            gl.Disable(OpenGL.GL_TEXTURE_2D);
            gl.Viewport(0, m_width / 2, m_width / 2, m_height / 2);
            gl.PushMatrix();
            gl.Translate(2.0f, -3.5f, 0.0f);
            gl.MatrixMode(OpenGL.GL_PROJECTION);
            gl.LoadIdentity();
            gl.Ortho2D(-15.0f, 15.0f, -12.0f, 12.0f);
            gl.MatrixMode(OpenGL.GL_MODELVIEW);

            //poruka

            gl.PushMatrix();
            gl.Color(1.0f, 1f, 0.0f);
            gl.Translate(1.5f, -4.0f, 0.0f);


            gl.DrawText3D("Times New Roman Bold", 10, 0.0f, 0.0f, "Predmet: Racunarska grafika");
            gl.Translate(-11.5f, -1.0f, 0.0f);
            gl.DrawText3D("Times New Roman Bold", 10, 1f, 1f, "Sk.god: 2017/18.");
            gl.Translate(-6.370f, -1.0f, 0.0f);
            gl.DrawText3D("Times New Roman Bold", 10, 1f, 1f, "Ime: Vladimir");
            gl.Translate(-5.55f, -1.0f, 0.0f);
            gl.DrawText3D("Times New Roman Bold", 10, 1f, 1f, "Prezime: Jovicic");
            gl.Translate(-6.3f, -1.10f, 0.0f);
            gl.DrawText3D("Times New Roman Bold", 10, 1f, 1f, "Sifra zad: 16.1");
            gl.PopMatrix();

            gl.Viewport(0, 0, m_width, m_height);
            gl.MatrixMode(OpenGL.GL_PROJECTION);
            gl.LoadIdentity();
            gl.Perspective(45f, (float)m_width / m_height, 1.0f, 20000f);
            gl.MatrixMode(OpenGL.GL_MODELVIEW);
            // gl.ClearColor(0.0f, 0.0f, 0.0f, 1.0f);
            gl.Disable(OpenGL.GL_TEXTURE_2D);
            gl.PopMatrix();
            gl.Flush();
        }
コード例 #30
0
        /// <summary>
        ///  Iscrtavanje OpenGL kontrole.
        /// </summary>
        public void Draw(OpenGL gl)
        {
            gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);

            gl.Viewport(0, 0, m_width, m_height);

            gl.PushMatrix();
            gl.LookAt(-m_sceneDistance, 0f, 0f, 0f, 0f, 0, 0f, 1f, 0f);//sa leve strane je - deo X-ose
            // gl.Translate(0.0f, 0.0f, -m_sceneDistance);
            gl.Rotate(m_xRotation, 0.0f, 0.0f, 1.0f);
            gl.Rotate(m_yRotation, 0.0f, 1.0f, 0.0f);

            ///REFLEKTOR
            float[] rc = new float[] { r, g, b, 1.0f };

            //BOJA REGLEKTORA
            gl.Light(OpenGL.GL_LIGHT1, OpenGL.GL_AMBIENT, rc);
            gl.Light(OpenGL.GL_LIGHT1, OpenGL.GL_DIFFUSE, rc);
            gl.Light(OpenGL.GL_LIGHT1, OpenGL.GL_SPECULAR, rc);

            gl.Light(OpenGL.GL_LIGHT1, OpenGL.GL_POSITION, new float[] { 0, 100, 195, 1.0f });       //svetlo iznad mola
            gl.Light(OpenGL.GL_LIGHT1, OpenGL.GL_SPOT_DIRECTION, new float[] { 0.0f, -1.0f, 0.0f }); //sija na dole

            //podloga vode
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.WATER]); //VODA ZA PODLOGU
            //bindujemo teksturu
            gl.MatrixMode(OpenGL.GL_TEXTURE);                                            // UINUTAR TEXT MATRICE SE SKALIRA ,mora da bi mogle transformacije sa teksturama
            gl.PushMatrix();                                                             //unutar texture space se sad sve ovo radi
            gl.Scale(10, 10, 1);
            gl.MatrixMode(OpenGL.GL_MODELVIEW);                                          //vracamo na model view

            gl.PushMatrix();
            //gl.Translate(0.0f, 0.0f, -120f);
            gl.Begin(OpenGL.GL_QUADS);
            gl.Normal(0f, 1f, 0f); //normala za podlogu
            gl.Color(0.0f, 0.0f, 1.0f);
            gl.TexCoord(0f, 0f);   //koordinate teksture za podlogu
            gl.Vertex(200f, -0.5f, -200f);
            gl.TexCoord(0f, 1f);
            gl.Vertex(-200f, -0.5f, -200f);
            gl.TexCoord(1f, 1f);
            gl.Vertex(-200f, -0.5f, 200f);
            gl.TexCoord(1f, 0f);
            gl.Vertex(200f, -0.5f, 200f);
            gl.End();
            gl.PopMatrix();
            gl.MatrixMode(OpenGL.GL_TEXTURE);
            gl.PopMatrix();
            gl.MatrixMode(OpenGL.GL_MODELVIEW);
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.WOOD]); //drvo za mol i stubove

            if (Modulate)
            {
                gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_MODULATE);
            }


            gl.Translate(0.0f, 0.0f, 120f);
            //cube
            Cube cube = new Cube();

            gl.PushMatrix();
            gl.Color(0.5f, 0.5f, 0.5f);
            gl.Translate(0.0f, 20.0f, 70.0f);
            gl.Scale(30.0f, 5.0f, 30.0f); //dimenzije
            cube.Render(gl, RenderMode.Render);
            gl.PopMatrix();

            //gl.Scale(size, size, size); //dimenzije

            //cilindar1
            gl.PushMatrix();
            gl.Translate(-20.0f, -2.0f, 90.0f);
            gl.Translate(0, 25, 0);     //I VRATI ZA 25 NA GORE DA GORNNJA IVICA BUDE ISPOD KOCKE (3)
            gl.Scale(size, size, size); //SKLIARA SE ZA ONO SA SLEJDERA (2)
            gl.Translate(0, -25, 0);    //VISINA IM JE 25, ZATO -25 DA BUDE GORANJA IVICA NA 0 JER TADA SKALIRANJE SIRI STUB SAMO DOLE (1)

            gl.Rotate(-90f, 0f, 0f);

            gl.Scale(5.0f, 5.0f, 5.0f); //dimenzije
            Cylinder cil = new Cylinder();

            cil.TextureCoords = true;//KOORDIANTE TEKSTURA ZA CILINDRE
            cil.CreateInContext(gl);
            cil.BaseRadius = 0.5;
            cil.Height     = 5;
            cil.TopRadius  = 0.5;
            cil.Render(gl, SharpGL.SceneGraph.Core.RenderMode.Render);
            gl.PopMatrix();

            //cilindar2
            gl.PushMatrix();
            gl.Translate(20.0f, -2.0f, 90.0f);
            gl.Translate(0, 25, 0);
            gl.Scale(size, size, size);//SKALIRANJE
            gl.Translate(0, -25, 0);
            gl.Rotate(-90f, 0f, 0f);
            gl.Scale(5.0f, 5.0f, 5.0f); //dimenzije
            cil.CreateInContext(gl);
            cil.BaseRadius = 0.5;
            cil.Height     = 5;
            cil.TopRadius  = 0.5;
            cil.Render(gl, SharpGL.SceneGraph.Core.RenderMode.Render);
            gl.PopMatrix();

            //cilindar3
            gl.PushMatrix();
            gl.Translate(20.0f, -2.0f, 50.0f);
            gl.Translate(0, 25, 0);
            gl.Scale(size, size, size);//SKALIRANJE
            gl.Translate(0, -25, 0);
            gl.Rotate(-90f, 0f, 0f);
            gl.Scale(5.0f, 5.0f, 5.0f); //dimenzije
            cil.CreateInContext(gl);
            cil.BaseRadius = 0.5;
            cil.Height     = 5;
            cil.TopRadius  = 0.5;
            cil.Render(gl, SharpGL.SceneGraph.Core.RenderMode.Render);
            gl.PopMatrix();

            //cilindar4
            gl.PushMatrix();
            gl.Translate(-20.0f, -2.0f, 50.0f);
            gl.Translate(0, 25, 0);
            gl.Scale(size, size, size);//SKALIRANJE
            gl.Translate(0, -25, 0);
            gl.Rotate(-90f, 0f, 0f);
            gl.Scale(5.0f, 5.0f, 5.0f); //dimenzije
            cil.CreateInContext(gl);
            cil.BaseRadius = 0.5;
            cil.Height     = 5;
            cil.TopRadius  = 0.5;
            cil.Render(gl, SharpGL.SceneGraph.Core.RenderMode.Render);
            gl.PopMatrix();


            //cube stepenice(vrata)
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.METAL]); //metal za stepenice
            gl.PushMatrix();
            gl.Translate(0.0f + shipOffsetX, 0.0f, 50.0f + shipOffsetZ);                 //pomera brod
            gl.Rotate(0, shipRotation, 0);
            Cube cubeStairs = new Cube();

            gl.PushMatrix();
            gl.Color(0.5f, 0.50f, 0.50f);
            gl.Translate(0.0f, stairsY, -53.0f); //poemri da se ivica poklopi sa brodom, stairsY KAD NEMA ANIMACIJE JE 40, TOKOM ANIMACIJE JE NA POCETKU -20 KASNIJE SE PODIZE
            gl.Rotate(-stairs, 1f, 0.0f, 0.0f);  //ROTIRA ZA ONO SA SLAJDERA, TOKOM ANIMACIJE SE ISTO OVO MENJA
            gl.Scale(30.0f, 1.0f, 30.0f);        //dimenzije
            gl.Translate(0, 1, 1);               //pomeri se da bi se skalirao samo na gore u prema molu
            cube.Render(gl, RenderMode.Render);
            gl.PopMatrix();

            gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_ADD); //za brod je stapanje ADD
            gl.Translate(-20.0f, 0f, 0.0f);                                              //priblizi se brod molu
            gl.Color(0.5f, 0.50f, 0.50f);

            gl.Scale(0.2f, 0.32f, 0.32f);
            m_scene.Draw();

            gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_DECAL); //ZA OSTALO OPET VRATIMO NA DECAL
            gl.PopMatrix();



            gl.PopMatrix();
            // Oznaci kraj iscrtavanja
            //Tekst
            gl.PushMatrix();
            gl.DrawText(m_width - 200, 90, 1.0f, 1.0f, 0.0f, "Helvetica", 14, "Predmet:Racunarska grafika");
            gl.DrawText(m_width - 200, 90, 1.0f, 1.0f, 0.0f, "Helvetica", 14, "_______________________");
            gl.DrawText(m_width - 200, 70, 1.0f, 1.0f, 0.0f, "Helvetica", 14, "Sk.god: 2020/21.");
            gl.DrawText(m_width - 200, 70, 1.0f, 1.0f, 0.0f, "Helvetica", 14, "______________");
            gl.DrawText(m_width - 200, 50, 1.0f, 1.0f, 0.0f, "Helvetica", 14, "Ime: Maja ");
            gl.DrawText(m_width - 200, 50, 1.0f, 1.0f, 0.0f, "Helvetica", 14, "________");
            gl.DrawText(m_width - 200, 30, 1.0f, 1.0f, 0.0f, "Helvetica", 14, "Prezime: Dragojlovic");
            gl.DrawText(m_width - 200, 30, 1.0f, 1.0f, 0.0f, "Helvetica", 14, "________________");
            gl.DrawText(m_width - 200, 10, 1.0f, 1.0f, 0.0f, "Helvetica", 14, "Sifra zad: 10.1");
            gl.DrawText(m_width - 200, 10, 1.0f, 1.0f, 0.0f, "Helvetica", 14, "____________");
            gl.PopMatrix();
            gl.Flush();
        }