示例#1
0
        private void PrepareInstance(Entity entity)
        {
            Matrix4 transformationMatrix = Maths.CreateTransformationMatrix(
                entity.Position, entity.Rotation, entity.Scale);

            shader.LoadTransformationMatrix(transformationMatrix);
        }
示例#2
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);
        }
        public void RenderEntity(Entity ent, StaticShader shader)
        {
            TexturedModel texturedModel = ent.Model;
            RawModel      model         = texturedModel.Model;

            GL.BindVertexArray(model.vaoID);
            GL.EnableVertexArrayAttrib(model.vaoID, 0);
            GL.EnableVertexArrayAttrib(model.vaoID, 1);

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

            shader.LoadTransformationMatrix(transformationMatrix);

            GL.ActiveTexture(TextureUnit.Texture0);
            GL.BindTexture(TextureTarget.Texture2D, texturedModel.ModelTexture.TextureID);
            GL.DrawElements(BeginMode.Triangles, model.vertexCount, DrawElementsType.UnsignedInt, 0);
            GL.DisableVertexArrayAttrib(model.vaoID, 0);
            GL.DisableVertexArrayAttrib(model.vaoID, 1);
            GL.BindVertexArray(0);
        }
示例#4
0
        public virtual void Render()
        {
            shader.Use();
            shader.LoadViewMatrix(camera.GetViewMatrix());

            Gl.Enable(EnableCap.CullFace);
            Gl.CullFace(CullFaceMode.Back);

            foreach (KeyValuePair <GenericVAO, List <ModelEntity> > item in entityDictionary)
            {
                GenericVAO model = item.Key;
                PrepareModel(model);
                foreach (Entity entity in item.Value)
                {
                    shader.LoadTransformationMatrix(Maths.CreateTransformationMatrix(entity));
                    Gl.DrawElements(model.DrawMode, model.VertexCount, model.ElementType, model.OffsetInBytes);
                }
                UnBindModel();
            }

            entityDictionary.Clear();
        }