コード例 #1
0
        //metoda za crtanje podloge
        public void DrawGround(OpenGL gl)
        {
            gl.PushMatrix();

            //plava boja
            gl.Color(0.196078, 0.196078, 0.8);

            //dodela teksture plocica i stapanje sa materijalom
            gl.MatrixMode(OpenGL.GL_TEXTURE);
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Floor]);
            gl.TexParameter(OpenGL.GL_TEXTURE_2D, OpenGL.GL_TEXTURE_MIN_FILTER, OpenGL.GL_LINEAR);
            gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_MODULATE);

            gl.LoadIdentity();
            gl.PushMatrix();
            gl.Scale(10f, 10f, 10f); // 10x veci broj plocica


            gl.Begin(OpenGL.GL_QUADS);

            gl.Normal(LightingUtilities.FindFaceNormal(-1000.0f, 0.0f, -1000.0f, 1000.0f, 0.0f, -1000.0f,
                                                       1000.0f, 0.0f, 1000.0f));
            gl.TexCoord(0.0f, 1.0f);
            gl.Vertex(-1000.0f, 0.0f, -1000.0f);
            gl.TexCoord(1.0f, 1.0f);
            gl.Vertex(1000.0f, 0.0f, -1000.0f);
            gl.TexCoord(1.0f, 0.0f);
            gl.Vertex(1000.0f, 0.0f, 1000.0f);
            gl.TexCoord(0.0f, 0.0f);
            gl.Vertex(-1000.0f, 0.0f, 1000.0f);
            gl.End();

            gl.MatrixMode(OpenGL.GL_TEXTURE);
            gl.PopMatrix();

            gl.MatrixMode(OpenGL.GL_MODELVIEW);

            gl.PopMatrix();
        }
コード例 #2
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.LoadIdentity();
            gl.Perspective(45f, (double)m_width / m_height, 1f, 20000f);
            gl.LookAt(0.0f, 10.0f, 100.0f, 0.0f, 0.0f, 0.0f, 0.0f, 350.0f, 0.0f);
            gl.MatrixMode(OpenGL.GL_MODELVIEW);
            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);

            Setup_Lighting(gl);

            //kontejner
            gl.PushMatrix();
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Empty]);
            gl.Translate(contPos[0], contPos[1], contPos[2]);
            gl.Rotate(contRotate1[0], contRotate1[1], contRotate1[2]);
            gl.Rotate(contRotate2[0], contRotate2[1], contRotate2[2]);
            gl.Rotate(contRotate3[0], contRotate3[1], contRotate3[2]);
            m_sceneCont.Draw();
            gl.PopMatrix();

            //kamion
            gl.PushMatrix();
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Empty]);
            gl.Translate(truckPos[0], truckPos[1], truckPos[2]);
            gl.Rotate(0, 90, 0);
            m_sceneTruck.Draw();
            gl.PopMatrix();

            //podloga od quada
            gl.PushMatrix();
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Asphalt]);
            gl.MatrixMode(OpenGL.GL_TEXTURE);
            gl.LoadIdentity();
            gl.Scale(0.02f, 0.02f, 0.02f);
            gl.MatrixMode(OpenGL.GL_MODELVIEW);
            gl.Rotate(-90, 0, 0);
            gl.Begin(OpenGL.GL_QUADS);
            gl.Normal(LightingUtilities.FindFaceNormal(-550.0f, -550.0f, 0, 550.0f, -550.0f, 0, 550.0f, 550.0f, 0));
            gl.TexCoord(0.0f, 0.0f);
            gl.Vertex(-550.0f, -550.0f, 0);
            gl.TexCoord(0.0f, 10.0f);
            gl.Vertex(550.0f, -550.0f, 0);
            gl.TexCoord(15.0f, 15.0f);
            gl.Vertex(550.0f, 550.0f, 0);
            gl.TexCoord(15.0f, 0.0f);
            gl.Vertex(-550.0f, 550.0f, 0);
            gl.End();
            gl.PopMatrix();

            //desni zid
            gl.PushMatrix();
            gl.Color(0.7f, 0.0f, 0.0f);
            gl.Translate(-110, 60, 0);
            gl.Scale(10f, 60f, 70f);

            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Empty]);
            Cube zd = new Cube();

            zd.Render(gl, RenderMode.Render);
            gl.PopMatrix();

            //zid iza
            gl.PushMatrix();
            //gl.Color(0.7f, 0.0f, 0.0f);
            gl.Translate(-250, 60, -80);
            gl.Rotate(0, 90, 0);
            gl.Scale(10f, 60f, 150f);
            gl.Enable(OpenGL.GL_NORMALIZE);
            Cube zi = new Cube();

            zi.Render(gl, RenderMode.Render);
            gl.PopMatrix();

            //zid lijevo
            gl.PushMatrix();
            //gl.Color(0.7f, 0.0f, 0.0f);
            gl.Translate(-390, 60, 0);
            gl.Scale(10f, 60f, 70f);
            Cube zl = new Cube();

            zl.Render(gl, RenderMode.Render);
            gl.PopMatrix();

            //cube svjetlo
            gl.PushMatrix();
            gl.Color(1f, 1f, 1f);
            gl.Translate(lightPointPos[0], lightPointPos[1], lightPointPos[2]);
            gl.Scale(fs, fs, fs);
            //gl.TexEnv(OpenGL.GL_TEXTURE_ENV, OpenGL.GL_TEXTURE_ENV_MODE, OpenGL.GL_ADD);
            gl.BindTexture(OpenGL.GL_TEXTURE_2D, m_textures[(int)TextureObjects.Empty]);
            Cube sijalica = new Cube();

            sijalica.Render(gl, SharpGL.SceneGraph.Core.RenderMode.Render);
            gl.PopMatrix();


            //bandera
            gl.PushMatrix();
            //gl.Color(0.0f, 0.0f, 0.0f);
            gl.Translate(-420, 0, 80);
            gl.Rotate(-90, 0, 0);
            gl.Scale(fsx, fsx, fsx);

            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);

            Cylinder st = new Cylinder();

            st.Height     = lightPointPos[1];
            st.BaseRadius = 7f;
            st.TopRadius  = 7f;
            st.CreateInContext(gl);
            st.Render(gl, SharpGL.SceneGraph.Core.RenderMode.Render);
            gl.PopMatrix();


            TextDraw3D(gl);

            gl.PopMatrix();
            gl.Flush();
        }