public void Draw(CustomGLControl glControl) { Matrix4 worldView = glControl.worldView; GL.UniformMatrix4(glControl.matrixID, false, ref worldView); Draw(glControl.level.textures); }
/*public override void Translate(Vector3 vector) * { * for (int i = 0; i < vertexBuffer.Length / 3; i++) * { * SetVertex(i, GetVertex(i) + vector); * } * * _position += vector; * } * * public override void Rotate(Vector3 vector) * { * float x = vector.X; * float y = vector.Y; * float z = vector.Z; * //Record base position * Vector3 basePosition = GetVertex(0); * * * for (int i = 0; i < vertexBuffer.Length / 3; i++) * { * //Record vertex position * Vector3 vertex = GetVertex(i); * * //Get local position relative to base * Vector3 distance = vertex - basePosition; * * //Rotate local position around Z axis * Vector3 rotated1 = new Vector3( * distance.X * fCos(z) - distance.Y * fSin(z), * distance.X * fSin(z) + distance.Y * fCos(z), * distance.Z * ); * * //Rotate local position around Y axis * Vector3 rotated2 = new Vector3( * rotated1.X * fCos(y) + rotated1.Z * fSin(y), * rotated1.Y, * -rotated1.X * fSin(y) + rotated1.Z * fCos(y) * ); * * //Rotate local position around X axis * Vector3 rotated3 = new Vector3( * rotated2.X, * rotated2.Y * fCos(x) - rotated2.Z * fSin(x), * rotated2.Y * fSin(x) + rotated2.Z * fCos(x) * ); * * //Add new local position to base position * Vector3 newPosition = basePosition + rotated3; * * //Write new position * SetVertex(i, newPosition); * } * _rotation += vector; * } * * public override void Scale(Vector3 scaleVector) * { * //Record base position * Vector3 basePosition = GetVertex(0); * * for (int i = 0; i < vertexBuffer.Length / 3; i++) * { * Vector3 vertex = GetVertex(i); * Vector3 distance = vertex - basePosition; * Vector3 scaledDistance = distance * scaleVector; * Vector3 newVertexPosition = basePosition + scaledDistance; * * //Write new position * SetVertex(i, newVertexPosition); * } * _scale *= scale; * }*/ public override void Render(CustomGLControl glControl, bool selected = false) { var worldView = glControl.worldView; GL.UniformMatrix4(glControl.matrixID, false, ref worldView); GL.Uniform4(glControl.colorID, selected ? selectedColor : normalColor); GetVBO(); GL.DrawArrays(PrimitiveType.LineStrip, 0, vertexBuffer.Length / 3); }
public void DrawCol(CustomGLControl glControl) { Matrix4 worldView = glControl.worldView; GL.UniformMatrix4(glControl.matrixID, false, ref worldView); GL.Uniform4(glControl.colorID, new Vector4(1, 1, 1, 1)); GetUBO(); GetBBO(); GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Line); GL.DrawElements(PrimitiveType.Triangles, indBuff.Length, DrawElementsType.UnsignedInt, 0); GL.UseProgram(glControl.collisionShaderID); GL.UniformMatrix4(glControl.matrixID, false, ref worldView); GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Fill); GL.DrawElements(PrimitiveType.Triangles, indBuff.Length, DrawElementsType.UnsignedInt, 0); }
public override void Render(CustomGLControl glControl, bool selected = false) { if (model == null || model.vertexBuffer == null || model.textureConfig.Count == 0) { return; } Matrix4 mvp = modelMatrix * glControl.worldView; //Has to be done in this order to work correctly GL.UniformMatrix4(glControl.matrixID, false, ref mvp); model.Draw(glControl.level.textures); if (selected) { RenderModelMesh(glControl); } }
public override void Render(CustomGLControl glControl, bool selected = false) { GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Line); Matrix4 mvp = modelMatrix * glControl.worldView; GL.UniformMatrix4(glControl.matrixID, false, ref mvp); GL.Uniform4(glControl.colorID, selected ? selectedColor : normalColor); GL.BindBuffer(BufferTarget.ArrayBuffer, VBO); GL.BindBuffer(BufferTarget.ElementArrayBuffer, IBO); GL.VertexAttribPointer(0, 3, VertexAttribPointerType.Float, false, 0, 0); GL.DrawElements(PrimitiveType.Triangles, cubeElements.Length, DrawElementsType.UnsignedShort, 0); GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Fill); }
public override void Render(Vector3 position, CustomGLControl control) { GetVBO(); Matrix4 modelMatrix = Matrix4.CreateTranslation(position); var mvp = modelMatrix * control.worldView; GL.UniformMatrix4(control.matrixID, false, ref mvp); GL.Uniform4(control.colorID, new Vector4(1, 0, 0, 1)); GL.DrawArrays(PrimitiveType.Triangles, 0, 3); GL.Uniform4(control.colorID, new Vector4(1, 0, 0, 1)); GL.DrawArrays(PrimitiveType.Triangles, 3, 3); GL.Uniform4(control.colorID, new Vector4(1, 0, 0, 1)); GL.DrawArrays(PrimitiveType.Triangles, 6, 3); GL.Uniform4(control.colorID, new Vector4(1, 0, 0, 1)); GL.DrawArrays(PrimitiveType.Triangles, 9, 3); GL.Uniform4(control.colorID, new Vector4(0, 1, 0, 1)); GL.DrawArrays(PrimitiveType.Triangles, 12, 3); GL.Uniform4(control.colorID, new Vector4(0, 1, 0, 1)); GL.DrawArrays(PrimitiveType.Triangles, 15, 3); GL.Uniform4(control.colorID, new Vector4(0, 1, 0, 1)); GL.DrawArrays(PrimitiveType.Triangles, 18, 3); GL.Uniform4(control.colorID, new Vector4(0, 1, 0, 1)); GL.DrawArrays(PrimitiveType.Triangles, 21, 3); GL.Uniform4(control.colorID, new Vector4(0, 0, 1, 1)); GL.DrawArrays(PrimitiveType.Triangles, 24, 3); GL.Uniform4(control.colorID, new Vector4(0, 0, 1, 1)); GL.DrawArrays(PrimitiveType.Triangles, 27, 3); GL.Uniform4(control.colorID, new Vector4(0, 0, 1, 1)); GL.DrawArrays(PrimitiveType.Triangles, 30, 3); GL.Uniform4(control.colorID, new Vector4(0, 0, 1, 1)); GL.DrawArrays(PrimitiveType.Triangles, 33, 3); }
public override void Render(Vector3 position, CustomGLControl control) { GetVBO(); Matrix4 modelMatrix = Matrix4.CreateTranslation(position); var mvp = modelMatrix * control.worldView; GL.UniformMatrix4(control.matrixID, false, ref mvp); GL.Uniform4(control.colorID, new Vector4(1, 0, 0, 1)); GL.DrawArrays(PrimitiveType.LineStrip, 0, 2); GL.Uniform4(control.colorID, new Vector4(0, 1, 0, 1)); GL.DrawArrays(PrimitiveType.LineStrip, 2, 2); GL.Uniform4(control.colorID, new Vector4(0, 0, 1, 1)); GL.DrawArrays(PrimitiveType.LineStrip, 4, 2); }
public void RenderModelMesh(CustomGLControl glControl) { if (model == null || model.vertexBuffer == null || modelMatrix == null) { return; } GL.UseProgram(glControl.colorShaderID); Matrix4 mvp = modelMatrix * glControl.worldView; GL.Uniform4(glControl.colorID, new Vector4(1, 1, 1, 1)); GL.UniformMatrix4(glControl.matrixID, false, ref mvp); model.GetVBO(); model.GetIBO(); GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Line); GL.DrawElements(PrimitiveType.Triangles, model.indexBuffer.Length, DrawElementsType.UnsignedShort, 0); GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Fill); GL.UseProgram(glControl.shaderID); }
public override void Render(CustomGLControl glControl, bool selected) { throw new NotImplementedException(); }
public abstract void Render(Vector3 position, CustomGLControl control);
public abstract void Render(CustomGLControl glControl, bool selected);