예제 #1
0
        public void Render(Entity entity, StaticShader shader)
        {
            TexturedModel texturedModel = entity.TexturedModel;
            RawModel      model         = texturedModel.RawModel;

            GL.BindVertexArray(model.vaoID);
            GL.EnableVertexAttribArray(0);
            GL.EnableVertexAttribArray(1);
            GL.EnableVertexAttribArray(2);

            Matrix4 transformationMatrix = Maths.CreateTransformationMatrix(
                entity.Position,
                entity.RotationX,
                entity.RotationY,
                entity.RotationZ,
                entity.Scale);

            shader.LoadTransformationMatrix(ref transformationMatrix);

            ModelTexture modelTexture = entity.TexturedModel.Texture;

            shader.LoadShineVariables(modelTexture.ShineDamper, modelTexture.Reflectivity);

            GL.ActiveTexture(TextureUnit.Texture0);
            GL.BindTexture(TextureTarget.Texture2D, texturedModel.Texture.TextureID);
            GL.DrawElements(PrimitiveType.Triangles, model.vertexCount, DrawElementsType.UnsignedInt, 0);
            GL.DisableVertexAttribArray(0);
            GL.DisableVertexAttribArray(1);
            GL.DisableVertexAttribArray(2);
            GL.BindVertexArray(0);
        }
예제 #2
0
        private void PrepareTexturedModel(TexturedModel texturedModel)
        {
            var rawModel = texturedModel.Model;

            GL.BindVertexArray(rawModel.VaoID);
            GL.EnableVertexAttribArray(0);
            GL.EnableVertexAttribArray(1);
            GL.EnableVertexAttribArray(2);

            var texture = texturedModel.Texture;

            shader.LoadShineVariables(texture.ShineDamper, texture.Reflectivity);
            GL.ActiveTexture(TextureUnit.Texture0);
            GL.BindTexture(TextureTarget.Texture2D, texture.TextureId);
        }