diff --git a/Programs/AvatarPreview/AvatarPreview.csproj b/Programs/AvatarPreview/AvatarPreview.csproj
index 0cca7aad..2ac715dc 100644
--- a/Programs/AvatarPreview/AvatarPreview.csproj
+++ b/Programs/AvatarPreview/AvatarPreview.csproj
@@ -1,148 +1,156 @@
-
- Local
- 14.0.25123
- 2.0
- {93CEA633-0000-0000-0000-000000000000}
- Debug
-
-
-
- AvatarPreview
- JScript
- Grid
- IE50
- false
- v4.0
- WinExe
-
- AvatarPreview
-
-
-
-
-
-
- True
- 285212672
- False
-
-
- TRACE;DEBUG
-
- True
- 4096
- False
- ..\..\bin\
- False
- False
- False
- 4
- False
- 1591,1574,0419
- AnyCPU
-
-
- True
- 285212672
- False
-
-
- TRACE
-
- False
- 4096
- True
- ..\..\bin\
- False
- False
- False
- 4
- False
- 1591,1574,0419
- AnyCPU
-
-
-
- System
- False
-
-
- System.Data
- False
-
-
- System.Drawing
- False
-
-
- System.Windows.Forms
- False
-
-
- System.Xml
- False
-
-
- Tao.OpenGl
- False
-
-
- Tao.Platform.Windows
- False
-
-
-
-
- LibreMetaverse
- {27C70F3A-0000-0000-0000-000000000000}
- {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- False
-
-
- LibreMetaverseTypes
- {B37B02AD-0000-0000-0000-000000000000}
- {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
- False
-
-
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- Code
-
-
- frmAvatar.cs
-
-
- frmAvatar.cs
-
-
- ResXFileCodeGenerator
- Resources.Designer.cs
- Designer
-
-
- True
- Resources.resx
-
-
-
-
-
-
-
-
-
-
+
+ Local
+ 14.0.25123
+ 2.0
+ {93CEA633-0000-0000-0000-000000000000}
+ Debug
+
+
+
+
+ AvatarPreview
+ JScript
+ Grid
+ IE50
+ false
+ v4.0
+ WinExe
+
+
+ AvatarPreview
+
+
+
+
+
+
+
+
+ True
+ 285212672
+ False
+
+
+ TRACE;DEBUG
+
+
+ True
+ 4096
+ False
+ ..\..\bin\
+ False
+ False
+ False
+ 4
+ False
+ 1591,1574,0419,0618
+ AnyCPU
+
+
+ True
+ 285212672
+ False
+
+
+ TRACE
+
+
+ False
+ 4096
+ True
+ ..\..\bin\
+ False
+ False
+ False
+ 4
+ False
+ 1591,1574,0419,0618
+ AnyCPU
+
+
+
+ ..\..\packages\OpenTK.2.0.0\lib\net20\OpenTK.dll
+
+
+ ..\..\packages\OpenTK.GLControl.1.1.2349.61993\lib\NET40\OpenTK.GLControl.dll
+
+
+ System
+ False
+
+
+ System.Data
+ False
+
+
+ System.Drawing
+ False
+
+
+ System.Windows.Forms
+ False
+
+
+ System.Xml
+ False
+
+
+
+
+ LibreMetaverse
+ {27C70F3A-0000-0000-0000-000000000000}
+ {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ False
+
+
+ LibreMetaverseTypes
+ {B37B02AD-0000-0000-0000-000000000000}
+ {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}
+ False
+
+
+
+
+ Form
+
+
+ Code
+
+
+ Code
+
+
+ Code
+
+
+ Code
+
+
+ frmAvatar.cs
+
+
+ frmAvatar.cs
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+ Designer
+
+
+ True
+ Resources.resx
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/Programs/AvatarPreview/GLMesh.cs b/Programs/AvatarPreview/GLMesh.cs
index 22e2320a..95b76bf8 100644
--- a/Programs/AvatarPreview/GLMesh.cs
+++ b/Programs/AvatarPreview/GLMesh.cs
@@ -110,6 +110,7 @@ namespace AvatarPreview
}
}
+ [Obsolete]
public override void LoadLODMesh(int level, string filename)
{
LODMesh lod = new LODMesh();
diff --git a/Programs/AvatarPreview/app.config b/Programs/AvatarPreview/app.config
new file mode 100644
index 00000000..d4f722e0
--- /dev/null
+++ b/Programs/AvatarPreview/app.config
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Programs/AvatarPreview/frmAvatar.Designer.cs b/Programs/AvatarPreview/frmAvatar.Designer.cs
index c06836d4..2e3dec86 100644
--- a/Programs/AvatarPreview/frmAvatar.Designer.cs
+++ b/Programs/AvatarPreview/frmAvatar.Designer.cs
@@ -41,7 +41,7 @@ namespace AvatarPreview
this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
- this.glControl = new Tao.Platform.Windows.SimpleOpenGlControl();
+ this.glControl = new OpenTK.GLControl();
this.tabControl = new System.Windows.Forms.TabControl();
this.tavView = new System.Windows.Forms.TabPage();
this.scrollZoom = new System.Windows.Forms.HScrollBar();
@@ -250,19 +250,11 @@ namespace AvatarPreview
//
// glControl
//
- this.glControl.AccumBits = ((byte)(0));
- this.glControl.AutoCheckErrors = false;
- this.glControl.AutoFinish = false;
- this.glControl.AutoMakeCurrent = true;
- this.glControl.AutoSwapBuffers = true;
this.glControl.BackColor = System.Drawing.Color.Black;
- this.glControl.ColorBits = ((byte)(32));
- this.glControl.DepthBits = ((byte)(16));
this.glControl.Dock = System.Windows.Forms.DockStyle.Fill;
this.glControl.Location = new System.Drawing.Point(0, 0);
this.glControl.Name = "glControl";
this.glControl.Size = new System.Drawing.Size(558, 653);
- this.glControl.StencilBits = ((byte)(0));
this.glControl.TabIndex = 0;
this.glControl.Paint += new System.Windows.Forms.PaintEventHandler(this.glControl_Paint);
this.glControl.Resize += new System.EventHandler(this.glControl_Resize);
@@ -1101,7 +1093,7 @@ namespace AvatarPreview
private System.Windows.Forms.ToolStripMenuItem helpToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem aboutToolStripMenuItem;
private System.Windows.Forms.SplitContainer splitContainer1;
- private Tao.Platform.Windows.SimpleOpenGlControl glControl;
+ private OpenTK.GLControl glControl;
private System.Windows.Forms.TabControl tabControl;
private System.Windows.Forms.TabPage tabMorphs;
private System.Windows.Forms.TabPage tabTextures;
diff --git a/Programs/AvatarPreview/frmAvatar.cs b/Programs/AvatarPreview/frmAvatar.cs
index 58977857..f3a6a0ea 100644
--- a/Programs/AvatarPreview/frmAvatar.cs
+++ b/Programs/AvatarPreview/frmAvatar.cs
@@ -1,19 +1,14 @@
using System;
using System.Collections.Generic;
-using System.ComponentModel;
-using System.Data;
using System.Drawing;
-using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Xml;
-using Tao.OpenGl;
-using Tao.Platform.Windows;
+using OpenTK.Graphics.OpenGL;
using OpenMetaverse;
using OpenMetaverse.Imaging;
-using OpenMetaverse.Rendering;
using OpenMetaverse.Assets;
namespace AvatarPreview
@@ -29,16 +24,13 @@ namespace AvatarPreview
{
InitializeComponent();
- glControl.InitializeContexts();
-
- Gl.glShadeModel(Gl.GL_SMOOTH);
- Gl.glClearColor(0f, 0f, 0f, 0f);
-
- Gl.glClearDepth(1.0f);
- Gl.glEnable(Gl.GL_DEPTH_TEST);
- Gl.glDepthMask(Gl.GL_TRUE);
- Gl.glDepthFunc(Gl.GL_LEQUAL);
- Gl.glHint(Gl.GL_PERSPECTIVE_CORRECTION_HINT, Gl.GL_NICEST);
+ GL.ShadeModel(ShadingModel.Smooth);
+ GL.ClearColor(Color.Black);
+ GL.ClearDepth(1.0f);
+ GL.Enable(EnableCap.DepthTest);
+ GL.DepthMask(true);
+ GL.DepthFunc(DepthFunction.Lequal);
+ GL.Hint(HintTarget.PerspectiveCorrectionHint, HintMode.Nicest);
glControl_Resize(null, null);
}
@@ -125,25 +117,20 @@ namespace AvatarPreview
private void glControl_Paint(object sender, PaintEventArgs e)
{
- Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
- Gl.glLoadIdentity();
-
- // Setup wireframe or solid fill drawing mode
+ GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
+ GL.LoadIdentity();
if (_wireframe)
- Gl.glPolygonMode(Gl.GL_FRONT_AND_BACK, Gl.GL_LINE);
+ GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Line);
else
- Gl.glPolygonMode(Gl.GL_FRONT, Gl.GL_FILL);
-
+ GL.PolygonMode(MaterialFace.Front, PolygonMode.Fill);
// Push the world matrix
- Gl.glPushMatrix();
-
- Gl.glEnableClientState(Gl.GL_VERTEX_ARRAY);
- Gl.glEnableClientState(Gl.GL_TEXTURE_COORD_ARRAY);
-
+ GL.PushMatrix();
+ GL.EnableClientState(ArrayCap.VertexArray);
+ GL.EnableClientState(ArrayCap.TextureCoordArray);
// World rotations
- Gl.glRotatef((float)scrollRoll.Value, 1f, 0f, 0f);
- Gl.glRotatef((float)scrollPitch.Value, 0f, 1f, 0f);
- Gl.glRotatef((float)scrollYaw.Value, 0f, 0f, 1f);
+ GL.Rotate(scrollRoll.Value, 1f, 0f, 0f);
+ GL.Rotate(scrollRoll.Value, 0f, 1f, 0f);
+ GL.Rotate(scrollRoll.Value, 0f, 0f, 1f);
if (_meshes.Count > 0)
{
@@ -151,61 +138,62 @@ namespace AvatarPreview
{
if (!_showSkirt && mesh.Name == "skirtMesh")
continue;
-
- Gl.glColor3f(1f, 1f, 1f);
+
+ GL.Color3(1f, 1f, 1f);
// Individual prim matrix
- Gl.glPushMatrix();
+ GL.PushMatrix();
//Gl.glTranslatef(mesh.Position.X, mesh.Position.Y, mesh.Position.Z);
- Gl.glRotatef(mesh.RotationAngles.X, 1f, 0f, 0f);
- Gl.glRotatef(mesh.RotationAngles.Y, 0f, 1f, 0f);
- Gl.glRotatef(mesh.RotationAngles.Z, 0f, 0f, 1f);
+ GL.Rotate(mesh.RotationAngles.X, 1f, 0f, 0f);
+ GL.Rotate(mesh.RotationAngles.Y, 0f, 1f, 0f);
+ GL.Rotate(mesh.RotationAngles.Z, 0f, 0f, 1f);
- Gl.glScalef(mesh.Scale.X, mesh.Scale.Y, mesh.Scale.Z);
+ GL.Scale(mesh.Scale.X, mesh.Scale.Y, mesh.Scale.Z);
// TODO: Texturing
- Gl.glTexCoordPointer(2, Gl.GL_FLOAT, 0, mesh.RenderData.TexCoords);
- Gl.glVertexPointer(3, Gl.GL_FLOAT, 0, mesh.RenderData.Vertices);
- Gl.glDrawElements(Gl.GL_TRIANGLES, mesh.RenderData.Indices.Length, Gl.GL_UNSIGNED_SHORT, mesh.RenderData.Indices);
+ GL.TexCoordPointer(2, TexCoordPointerType.Float, 0, mesh.RenderData.TexCoords);
+ GL.VertexPointer(3, VertexPointerType.Float, 0, mesh.RenderData.TexCoords);
+ GL.DrawElements(BeginMode.Triangles, mesh.RenderData.Indices.Length, DrawElementsType.UnsignedShort, mesh.RenderData.Indices);
}
}
// Pop the world matrix
- Gl.glPopMatrix();
+ GL.PopMatrix();
+
+ GL.DisableClientState(ArrayCap.TextureCoordArray);
+ GL.DisableClientState(ArrayCap.VertexArray);
- Gl.glDisableClientState(Gl.GL_TEXTURE_COORD_ARRAY);
- Gl.glDisableClientState(Gl.GL_VERTEX_ARRAY);
-
- Gl.glFlush();
+ GL.Flush();
}
private void glControl_Resize(object sender, EventArgs e)
{
- //Gl.glClearColor(0.39f, 0.58f, 0.93f, 1.0f); // Cornflower blue anyone?
- Gl.glClearColor(0f, 0f, 0f, 1f);
+ //GL.ClearColor(0.39f, 0.58f, 0.93f, 1.0f); // Cornflower blue anyone?
+ GL.ClearColor(0f, 0f, 0f, 1f);
- Gl.glPushMatrix();
- Gl.glMatrixMode(Gl.GL_PROJECTION);
- Gl.glLoadIdentity();
+ GL.PushMatrix();
+ GL.MatrixMode(MatrixMode.Projection);
+ GL.LoadIdentity();
+
+ GL.Viewport(0, 0, glControl.Width, glControl.Height);
- Gl.glViewport(0, 0, glControl.Width, glControl.Height);
-
- Glu.gluPerspective(50.0d, 1.0d, 0.001d, 50d);
+ OpenTK.Matrix4 perspectiveMatrix = OpenTK.Matrix4.CreatePerspectiveFieldOfView(50.0f, 1.0f, 0.001f, 50f);
+ GL.LoadMatrix(ref perspectiveMatrix);
Vector3 center = Vector3.Zero;
GLMesh head, lowerBody;
if (_meshes.TryGetValue("headMesh", out head) && _meshes.TryGetValue("lowerBodyMesh", out lowerBody))
center = (head.RenderData.Center + lowerBody.RenderData.Center) / 2f;
- Glu.gluLookAt(
- center.X, (double)scrollZoom.Value * 0.1d + center.Y, center.Z,
- center.X, (double)scrollZoom.Value * 0.1d + center.Y + 1d, center.Z,
- 0d, 0d, 1d);
-
- Gl.glMatrixMode(Gl.GL_MODELVIEW);
+ OpenTK.Matrix4 lookAt = OpenTK.Matrix4.LookAt(
+ new OpenTK.Vector3(center.X, scrollZoom.Value * 0.1f + center.Y, center.Z),
+ new OpenTK.Vector3(center.X, scrollZoom.Value * 0.1f + center.Y + 1f, center.Z),
+ new OpenTK.Vector3(0f, 0f, 1f));
+ GL.LoadMatrix(ref lookAt);
+ GL.MatrixMode(MatrixMode.Modelview);
}
private void scroll_ValueChanged(object sender, EventArgs e)
diff --git a/Programs/AvatarPreview/packages.config b/Programs/AvatarPreview/packages.config
new file mode 100644
index 00000000..44488244
--- /dev/null
+++ b/Programs/AvatarPreview/packages.config
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/Programs/PrimWorkshop/PrimWorkshop.csproj b/Programs/PrimWorkshop/PrimWorkshop.csproj
index cd2793d3..924a666c 100644
--- a/Programs/PrimWorkshop/PrimWorkshop.csproj
+++ b/Programs/PrimWorkshop/PrimWorkshop.csproj
@@ -76,6 +76,15 @@
..\..\packages\SharpZipLib.0.86.0\lib\20\ICSharpCode.SharpZipLib.dll
+
+ ..\..\packages\Lyncee.OpenTK.1.1.1173.43181\lib\OpenTK.dll
+
+
+ ..\..\packages\Lyncee.OpenTK.Compatibility.1.1.1173.43181\lib\OpenTK.Compatibility.dll
+
+
+ ..\..\packages\OpenTK.GLControl.1.1.2349.61993\lib\NET40\OpenTK.GLControl.dll
+
System
False
@@ -96,14 +105,6 @@
System.Xml
False
-
- Tao.OpenGl
- False
-
-
- Tao.Platform.Windows
- False
-
@@ -167,6 +168,8 @@
+
+
diff --git a/Programs/PrimWorkshop/app.config b/Programs/PrimWorkshop/app.config
new file mode 100644
index 00000000..d4f722e0
--- /dev/null
+++ b/Programs/PrimWorkshop/app.config
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Programs/PrimWorkshop/frmBrowser.Designer.cs b/Programs/PrimWorkshop/frmBrowser.Designer.cs
index 0d6a35e3..0f4685b2 100644
--- a/Programs/PrimWorkshop/frmBrowser.Designer.cs
+++ b/Programs/PrimWorkshop/frmBrowser.Designer.cs
@@ -31,7 +31,7 @@ namespace PrimWorkshop
GlacialComponents.Controls.GLColumn glColumn1 = new GlacialComponents.Controls.GLColumn();
GlacialComponents.Controls.GLColumn glColumn2 = new GlacialComponents.Controls.GLColumn();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
- this.glControl = new Tao.Platform.Windows.SimpleOpenGlControl();
+ this.glControl = new OpenTK.GLControl();
this.panel1 = new System.Windows.Forms.Panel();
this.txtPass = new System.Windows.Forms.TextBox();
this.txtLast = new System.Windows.Forms.TextBox();
@@ -83,20 +83,12 @@ namespace PrimWorkshop
//
// glControl
//
- this.glControl.AccumBits = ((byte)(0));
- this.glControl.AutoCheckErrors = false;
- this.glControl.AutoFinish = false;
- this.glControl.AutoMakeCurrent = true;
- this.glControl.AutoSwapBuffers = true;
this.glControl.BackColor = System.Drawing.Color.Black;
- this.glControl.ColorBits = ((byte)(32));
this.tableLayoutPanel1.SetColumnSpan(this.glControl, 2);
- this.glControl.DepthBits = ((byte)(16));
this.glControl.Dock = System.Windows.Forms.DockStyle.Fill;
this.glControl.Location = new System.Drawing.Point(3, 3);
this.glControl.Name = "glControl";
this.glControl.Size = new System.Drawing.Size(618, 411);
- this.glControl.StencilBits = ((byte)(0));
this.glControl.TabIndex = 7;
this.glControl.TabStop = false;
this.glControl.MouseMove += new System.Windows.Forms.MouseEventHandler(this.glControl_MouseMove);
@@ -366,7 +358,7 @@ namespace PrimWorkshop
#endregion
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
- private Tao.Platform.Windows.SimpleOpenGlControl glControl;
+ private OpenTK.GLControl glControl;
private System.Windows.Forms.Panel panel1;
private System.Windows.Forms.TextBox txtPass;
private System.Windows.Forms.TextBox txtLast;
diff --git a/Programs/PrimWorkshop/frmBrowser.cs b/Programs/PrimWorkshop/frmBrowser.cs
index 5126a186..e30e78f5 100644
--- a/Programs/PrimWorkshop/frmBrowser.cs
+++ b/Programs/PrimWorkshop/frmBrowser.cs
@@ -2,13 +2,11 @@ using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
-using System.Drawing.Imaging;
using System.Windows.Forms;
using System.IO;
using System.Runtime.InteropServices;
-using Tao.OpenGl;
-using Tao.Platform.Windows;
using ICSharpCode.SharpZipLib.Zip;
+using OpenTK.Graphics.OpenGL;
using OpenMetaverse;
using OpenMetaverse.StructuredData;
using OpenMetaverse.Imaging;
@@ -50,7 +48,7 @@ namespace PrimWorkshop
uint LastHit = 0;
//warning CS0414: The private field `PrimWorkshop.frmBrowser.PivotPosition' is assigned but its value is never used
- Vector3 PivotPosition = Vector3.Zero;
+ OpenMetaverse.Vector3 PivotPosition = OpenMetaverse.Vector3.Zero;
private bool Pivoting;
Point LastPivot;
@@ -73,7 +71,6 @@ namespace PrimWorkshop
InitializeComponent();
// Setup OpenGL
- glControl.InitializeContexts();
glControl.SwapBuffers();
glControl.MouseWheel += new MouseEventHandler(glControl_MouseWheel);
@@ -122,7 +119,7 @@ namespace PrimWorkshop
foreach (TextureInfo tex in Textures.Values)
{
int id = tex.ID;
- Gl.glDeleteTextures(1, ref id);
+ GL.DeleteTextures(1, ref id);
}
Textures.Clear();
@@ -218,13 +215,13 @@ namespace PrimWorkshop
private void InitOpenGL()
{
- Gl.glShadeModel(Gl.GL_SMOOTH);
+ GL.ShadeModel(ShadingModel.Smooth);
- Gl.glClearDepth(1.0f);
- Gl.glEnable(Gl.GL_DEPTH_TEST);
- Gl.glDepthMask(Gl.GL_TRUE);
- Gl.glDepthFunc(Gl.GL_LEQUAL);
- Gl.glHint(Gl.GL_PERSPECTIVE_CORRECTION_HINT, Gl.GL_NICEST);
+ GL.ClearDepth(1d);
+ GL.Enable(EnableCap.DepthTest);
+ GL.DepthMask(true);
+ GL.DepthFunc(DepthFunction.Lequal);
+ GL.Hint(HintTarget.PerspectiveCorrectionHint, HintMode.Nicest);
}
private void InitHeightmap()
@@ -301,14 +298,14 @@ namespace PrimWorkshop
Client.Self.Movement.Camera.Far = (float)Camera.Far;
}
- Gl.glPushMatrix();
- Gl.glMatrixMode(Gl.GL_PROJECTION);
- Gl.glLoadIdentity();
+ GL.PushMatrix();
+ GL.MatrixMode(MatrixMode.Projection);
+ GL.LoadIdentity();
SetPerspective();
-
- Gl.glMatrixMode(Gl.GL_MODELVIEW);
- Gl.glPopMatrix();
+
+ GL.MatrixMode(MatrixMode.Modelview);
+ GL.PopMatrix();
}
private bool ExportObject(RenderablePrim parent, string fileName, out int prims, out int textures, out string error)
@@ -824,28 +821,38 @@ namespace PrimWorkshop
private void SetPerspective()
{
- Glu.gluPerspective(50.0d * Camera.Zoom, 1.0d, 0.1d, Camera.Far);
+ OpenTK.Matrix4 perspective = OpenTK.Matrix4.CreatePerspectiveFieldOfView(
+ 50.0f * (float)Camera.Zoom, 1.0f, 0.1f, (float)Camera.Far);
+ }
+
+ private void GluPickMatrix(double x, double y, double deltax, double deltay, int[] viewport)
+ {
+ if (deltax <= 0 || deltay <= 0) return;
+
+ GL.Translate((viewport[2] - 2 * (x - viewport[0])) / deltax,
+ (viewport[3] - 2 * (y - viewport[1])) / deltay,
+ 0);
+ GL.Scale(viewport[2] / deltax, viewport[3] / deltay, 1.0);
}
private void StartPicking(int cursorX, int cursorY)
{
int[] viewport = new int[4];
+
+ GL.SelectBuffer(SELECT_BUFSIZE, SelectBuffer);
+ GL.RenderMode(RenderingMode.Select);
- Gl.glSelectBuffer(SELECT_BUFSIZE, SelectBuffer);
- Gl.glRenderMode(Gl.GL_SELECT);
-
- Gl.glMatrixMode(Gl.GL_PROJECTION);
- Gl.glPushMatrix();
- Gl.glLoadIdentity();
-
- Gl.glGetIntegerv(Gl.GL_VIEWPORT, viewport);
- Glu.gluPickMatrix(cursorX, viewport[3] - cursorY, 5, 5, viewport);
+ GL.MatrixMode(MatrixMode.Projection);
+ GL.PushMatrix();
+ GL.LoadIdentity();
+ GL.GetInteger(GetPName.Viewport, viewport);
+ GluPickMatrix(cursorX, viewport[3] - cursorY, 5, 5, viewport);
+
SetPerspective();
- Gl.glMatrixMode(Gl.GL_MODELVIEW);
-
- Gl.glInitNames();
+ GL.MatrixMode(MatrixMode.Modelview);
+ GL.InitNames();
}
private void StopPicking()
@@ -853,13 +860,13 @@ namespace PrimWorkshop
int hits;
// Resotre the original projection matrix
- Gl.glMatrixMode(Gl.GL_PROJECTION);
- Gl.glPopMatrix();
- Gl.glMatrixMode(Gl.GL_MODELVIEW);
- Gl.glFlush();
+ GL.MatrixMode(MatrixMode.Projection);
+ GL.PopMatrix();
+ GL.MatrixMode(MatrixMode.Modelview);
+ GL.Flush();
// Return to normal rendering mode
- hits = Gl.glRenderMode(Gl.GL_RENDER);
+ hits = GL.RenderMode(RenderingMode.Render);
// If there are hits process them
if (hits != 0)
@@ -1083,34 +1090,36 @@ namespace PrimWorkshop
{
try
{
- Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
- Gl.glLoadIdentity();
- Gl.glEnableClientState(Gl.GL_VERTEX_ARRAY);
- Gl.glEnableClientState(Gl.GL_TEXTURE_COORD_ARRAY);
+ GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
+ GL.LoadIdentity();
+ GL.EnableClientState(ArrayCap.VertexArray);
+ GL.EnableClientState(ArrayCap.TextureCoordArray);
if (Clicked)
StartPicking(ClickX, ClickY);
// Setup wireframe or solid fill drawing mode
- Gl.glPolygonMode(Gl.GL_FRONT, Gl.GL_LINE);
+ GL.PolygonMode(MaterialFace.Front, PolygonMode.Line);
// Position the camera
- Glu.gluLookAt(
+ OpenTK.Matrix4 lookAt = OpenTK.Matrix4.LookAt(
Camera.Position.X, Camera.Position.Y, Camera.Position.Z,
Camera.FocalPoint.X, Camera.FocalPoint.Y, Camera.FocalPoint.Z,
0f, 0f, 1f);
+ GL.MatrixMode(MatrixMode.Modelview);
+ GL.LoadMatrix(ref lookAt);
RenderSkybox();
// Push the world matrix
- Gl.glPushMatrix();
+ GL.PushMatrix();
RenderTerrain();
RenderPrims();
RenderAvatars();
- Gl.glDisableClientState(Gl.GL_TEXTURE_COORD_ARRAY);
- Gl.glDisableClientState(Gl.GL_VERTEX_ARRAY);
+ GL.DisableClientState(ArrayCap.TextureCoordArray);
+ GL.DisableClientState(ArrayCap.VertexArray);
if (Clicked)
{
@@ -1119,8 +1128,8 @@ namespace PrimWorkshop
}
// Pop the world matrix
- Gl.glPopMatrix();
- Gl.glFlush();
+ GL.PopMatrix();
+ GL.Flush();
glControl.Invalidate();
}
@@ -1175,14 +1184,14 @@ namespace PrimWorkshop
int i = 0;
// No texture
- Gl.glBindTexture(Gl.GL_TEXTURE_2D, 0);
+ GL.BindTexture(TextureTarget.Texture2D, 0);
for (int hy = 0; hy < 16; hy++)
{
for (int hx = 0; hx < 16; hx++)
{
uint patchName = (uint)(TERRAIN_START + i);
- Gl.glPushName(patchName);
+ GL.PushName(patchName);
++i;
// Check if this patch is currently selected
@@ -1190,8 +1199,7 @@ namespace PrimWorkshop
for (int y = 0; y < 15; y++)
{
- Gl.glBegin(Gl.GL_TRIANGLE_STRIP);
-
+ GL.Begin(BeginMode.TriangleStrip);
for (int x = 0; x < 15; x++)
{
// Vertex 0
@@ -1199,42 +1207,41 @@ namespace PrimWorkshop
float color = height / MaxHeight;
float red = (selected) ? 1f : color;
- Gl.glColor3f(red, color, color);
- Gl.glTexCoord2f(0f, 0f);
- Gl.glVertex3f(hx * 16 + x, hy * 16 + y, height);
+ GL.Color3(red, color, color);
+ GL.TexCoord2(0f, 0f);
+ GL.Vertex3(hx * 16 + x, hy * 16 + y, height);
// Vertex 1
height = Heightmap[hy, hx].Data[y * 16 + (x + 1)];
color = height / MaxHeight;
red = (selected) ? 1f : color;
- Gl.glColor3f(red, color, color);
- Gl.glTexCoord2f(1f, 0f);
- Gl.glVertex3f(hx * 16 + x + 1, hy * 16 + y, height);
+ GL.Color3(red, color, color);
+ GL.TexCoord2(1f, 0f);
+ GL.Vertex3(hx * 16 + x + 1, hy * 16 + y, height);
// Vertex 2
height = Heightmap[hy, hx].Data[(y + 1) * 16 + x];
color = height / MaxHeight;
red = (selected) ? 1f : color;
- Gl.glColor3f(red, color, color);
- Gl.glTexCoord2f(0f, 1f);
- Gl.glVertex3f(hx * 16 + x, hy * 16 + y + 1, height);
+ GL.Color3(red, color, color);
+ GL.TexCoord2(0f, 1f);
+ GL.Vertex3(hx * 16 + x, hy * 16 + y + 1, height);
// Vertex 3
height = Heightmap[hy, hx].Data[(y + 1) * 16 + (x + 1)];
color = height / MaxHeight;
red = (selected) ? 1f : color;
- Gl.glColor3f(red, color, color);
- Gl.glTexCoord2f(1f, 1f);
- Gl.glVertex3f(hx * 16 + x + 1, hy * 16 + y + 1, height);
+ GL.Color3(red, color, color);
+ GL.TexCoord2(1f, 1f);
+ GL.Vertex3(hx * 16 + x + 1, hy * 16 + y + 1, height);
}
- Gl.glEnd();
+ GL.End();
}
-
- Gl.glPopName();
+ GL.PopName();
}
}
}
@@ -1254,13 +1261,13 @@ namespace PrimWorkshop
{
if (RenderPrimList != null && RenderPrimList.Count > 0)
{
- Gl.glEnable(Gl.GL_TEXTURE_2D);
+ GL.Enable(EnableCap.Texture2D);
lock (RenderPrimList)
{
bool firstPass = true;
- Gl.glDisable(Gl.GL_BLEND);
- Gl.glEnable(Gl.GL_DEPTH_TEST);
+ GL.Disable(EnableCap.Blend);
+ GL.Enable(EnableCap.DepthTest);
StartRender:
@@ -1278,9 +1285,9 @@ namespace PrimWorkshop
continue;
}
}
-
- Gl.glPushName(prim.LocalID);
- Gl.glPushMatrix();
+
+ GL.PushName(prim.LocalID);
+ GL.PushMatrix();
if (prim.ParentID != 0)
{
@@ -1288,23 +1295,23 @@ namespace PrimWorkshop
Primitive parent = parentRender.Prim;
// Apply parent translation and rotation
- Gl.glMultMatrixf(Math3D.CreateTranslationMatrix(parent.Position));
- Gl.glMultMatrixf(Math3D.CreateRotationMatrix(parent.Rotation));
+ GL.MultMatrix(Math3D.CreateTranslationMatrix(parent.Position));
+ GL.MultMatrix(Math3D.CreateRotationMatrix(parent.Rotation));
}
// Apply prim translation and rotation
- Gl.glMultMatrixf(Math3D.CreateTranslationMatrix(prim.Position));
- Gl.glMultMatrixf(Math3D.CreateRotationMatrix(prim.Rotation));
+ GL.MultMatrix(Math3D.CreateTranslationMatrix(prim.Position));
+ GL.MultMatrix(Math3D.CreateRotationMatrix(prim.Rotation));
// Scale the prim
- Gl.glScalef(prim.Scale.X, prim.Scale.Y, prim.Scale.Z);
+ GL.Scale(prim.Scale.X, prim.Scale.Y, prim.Scale.Z);
// Draw the prim faces
for (int j = 0; j < render.Mesh.Faces.Count; j++)
{
Face face = render.Mesh.Faces[j];
FaceData data = (FaceData)face.UserData;
- Color4 color = face.TextureFace.RGBA;
+ OpenMetaverse.Color4 color = face.TextureFace.RGBA;
bool alpha = false;
int textureID = 0;
@@ -1322,18 +1329,18 @@ namespace PrimWorkshop
textureID = info.ID;
// Enable texturing for this face
- Gl.glPolygonMode(Gl.GL_FRONT_AND_BACK, Gl.GL_FILL);
+ GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Fill);
}
else
{
if (face.TextureFace.TextureID == Primitive.TextureEntry.WHITE_TEXTURE ||
face.TextureFace.TextureID == UUID.Zero)
{
- Gl.glPolygonMode(Gl.GL_FRONT, Gl.GL_FILL);
+ GL.PolygonMode(MaterialFace.Front, PolygonMode.Fill);
}
else
{
- Gl.glPolygonMode(Gl.GL_FRONT, Gl.GL_LINE);
+ GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Line);
}
}
@@ -1342,41 +1349,40 @@ namespace PrimWorkshop
// Color this prim differently based on whether it is selected or not
if (LastHit == prim.LocalID || (LastHit != 0 && LastHit == prim.ParentID))
{
- Gl.glColor4f(1f, color.G * 0.3f, color.B * 0.3f, color.A);
+ GL.Color4(1f, color.G * 0.3f, color.B * 0.3f, color.A);
}
else
{
- Gl.glColor4f(color.R, color.G, color.B, color.A);
+ GL.Color4(color.R, color.G, color.B, color.A);
}
// Bind the texture
- Gl.glBindTexture(Gl.GL_TEXTURE_2D, textureID);
-
- Gl.glTexCoordPointer(2, Gl.GL_FLOAT, 0, data.TexCoords);
- Gl.glVertexPointer(3, Gl.GL_FLOAT, 0, data.Vertices);
- Gl.glDrawElements(Gl.GL_TRIANGLES, data.Indices.Length, Gl.GL_UNSIGNED_SHORT, data.Indices);
+ GL.BindTexture(TextureTarget.Texture2D, textureID);
+
+ GL.TexCoordPointer(2, TexCoordPointerType.Float, 0, data.TexCoords);
+ GL.VertexPointer(3, VertexPointerType.Float, 0, data.Vertices);
+ GL.DrawElements(BeginMode.Triangles, data.Indices.Length, DrawElementsType.UnsignedShort, data.Indices);
}
#endregion Texturing
}
- Gl.glPopMatrix();
- Gl.glPopName();
+ GL.PopMatrix();
+ GL.PopName();
}
if (firstPass)
{
firstPass = false;
- Gl.glEnable(Gl.GL_BLEND);
- Gl.glBlendFunc(Gl.GL_SRC_ALPHA, Gl.GL_ONE_MINUS_SRC_ALPHA);
- //Gl.glDisable(Gl.GL_DEPTH_TEST);
+ GL.Enable(EnableCap.Blend);
+ GL.BlendFunc(BlendingFactorSrc.SrcAlpha, BlendingFactorDest.OneMinusSrcAlpha);
goto StartRender;
}
}
- Gl.glEnable(Gl.GL_DEPTH_TEST);
- Gl.glDisable(Gl.GL_TEXTURE_2D);
+ GL.Enable(EnableCap.DepthTest);
+ GL.Disable(EnableCap.Texture2D);
}
}
@@ -1384,23 +1390,23 @@ namespace PrimWorkshop
{
if (Client != null && Client.Network.CurrentSim != null)
{
- Gl.glColor3f(0f, 1f, 0f);
+ GL.Color3(0f, 1f, 0f);
Client.Network.CurrentSim.ObjectsAvatars.ForEach(
delegate(Avatar avatar)
{
- Gl.glPushMatrix();
- Gl.glTranslatef(avatar.Position.X, avatar.Position.Y, avatar.Position.Z);
+ GL.PushMatrix();
+ GL.Translate(avatar.Position.X, avatar.Position.Y, avatar.Position.Z);
- Glu.GLUquadric quad = Glu.gluNewQuadric();
- Glu.gluSphere(quad, 1.0d, 10, 10);
- Glu.gluDeleteQuadric(quad);
-
- Gl.glPopMatrix();
+ var quad = OpenTK.Graphics.Glu.NewQuadric();
+ OpenTK.Graphics.Glu.Sphere(quad, 1.0d, 10, 10);
+ OpenTK.Graphics.Glu.DeleteQuadric(quad);
+
+ GL.PopMatrix();
}
);
- Gl.glColor3f(1f, 1f, 1f);
+ GL.Color3(1f, 1f, 1f);
}
}
@@ -1446,21 +1452,23 @@ namespace PrimWorkshop
try
{
- Gl.glGenTextures(1, out textureID);
- Gl.glBindTexture(Gl.GL_TEXTURE_2D, textureID);
+ GL.GenTextures(1, out textureID);
+ GL.BindTexture(TextureTarget.Texture2D, textureID);
+
+ GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)All.LinearMipmapNearest);
+ GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)All.Linear);
+ GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapS, (int)All.Repeat);
+ GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapT, (int)All.Repeat);
+ GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.GenerateMipmap, 1);
- Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_LINEAR_MIPMAP_NEAREST); //Gl.GL_NEAREST);
- Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_LINEAR);
- Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_WRAP_S, Gl.GL_REPEAT);
- Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_WRAP_T, Gl.GL_REPEAT);
- Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_GENERATE_MIPMAP, Gl.GL_TRUE); //Gl.GL_FALSE);
//Gl.glTexImage2D(Gl.GL_TEXTURE_2D, 0, Gl.GL_RGBA, bitmap.Width, bitmap.Height, 0, Gl.GL_BGRA, Gl.GL_UNSIGNED_BYTE,
// bitmapData.Scan0);
//int error = Gl.glGetError();
-
- int error = Glu.gluBuild2DMipmaps(Gl.GL_TEXTURE_2D, Gl.GL_RGBA, imgData.Width, imgData.Height, Gl.GL_BGRA,
- Gl.GL_UNSIGNED_BYTE, raw);
+
+ int error = OpenTK.Graphics.Glu.Build2DMipmap(OpenTK.Graphics.TextureTarget.Texture2D,
+ (int)OpenTK.Graphics.PixelInternalFormat.Rgba, imgData.Width, imgData.Height,
+ OpenTK.Graphics.PixelFormat.Bgra, OpenTK.Graphics.PixelType.UnsignedByte, raw);
if (error == 0)
{
@@ -1629,18 +1637,18 @@ namespace PrimWorkshop
private void glControl_Resize(object sender, EventArgs e)
{
- Gl.glClearColor(0.39f, 0.58f, 0.93f, 1.0f);
+ GL.ClearColor(0.39f, 0.58f, 0.93f, 1.0f);
- Gl.glViewport(0, 0, glControl.Width, glControl.Height);
+ GL.Viewport(0, 0, glControl.Width, glControl.Height);
- Gl.glPushMatrix();
- Gl.glMatrixMode(Gl.GL_PROJECTION);
- Gl.glLoadIdentity();
+ GL.PushMatrix();
+ GL.MatrixMode(MatrixMode.Projection);
+ GL.LoadIdentity();
SetPerspective();
- Gl.glMatrixMode(Gl.GL_MODELVIEW);
- Gl.glPopMatrix();
+ GL.MatrixMode(MatrixMode.Modelview);
+ GL.PopMatrix();
// Set the center of the glControl as the default pivot point
LastPivot = glControl.PointToScreen(new Point(glControl.Width / 2, glControl.Height / 2));
diff --git a/Programs/PrimWorkshop/frmPrimWorkshop.Designer.cs b/Programs/PrimWorkshop/frmPrimWorkshop.Designer.cs
index f969477a..6b54675f 100644
--- a/Programs/PrimWorkshop/frmPrimWorkshop.Designer.cs
+++ b/Programs/PrimWorkshop/frmPrimWorkshop.Designer.cs
@@ -15,7 +15,7 @@ namespace PrimWorkshop
{
if (disposing && (components != null))
{
- glControl.DestroyContexts();
+ glControl.Context.Dispose();
components.Dispose();
}
base.Dispose(disposing);
@@ -48,7 +48,7 @@ namespace PrimWorkshop
this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem();
this.splitContainer = new System.Windows.Forms.SplitContainer();
- this.glControl = new Tao.Platform.Windows.SimpleOpenGlControl();
+ this.glControl = new OpenTK.GLControl();
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
this.panel2 = new System.Windows.Forms.Panel();
this.label2 = new System.Windows.Forms.Label();
@@ -233,19 +233,11 @@ namespace PrimWorkshop
//
// glControl
//
- this.glControl.AccumBits = ((byte)(0));
- this.glControl.AutoCheckErrors = false;
- this.glControl.AutoFinish = false;
- this.glControl.AutoMakeCurrent = true;
- this.glControl.AutoSwapBuffers = true;
this.glControl.BackColor = System.Drawing.Color.Black;
- this.glControl.ColorBits = ((byte)(32));
- this.glControl.DepthBits = ((byte)(16));
this.glControl.Dock = System.Windows.Forms.DockStyle.Fill;
this.glControl.Location = new System.Drawing.Point(0, 0);
this.glControl.Name = "glControl";
this.glControl.Size = new System.Drawing.Size(550, 512);
- this.glControl.StencilBits = ((byte)(0));
this.glControl.TabIndex = 5;
this.glControl.Paint += new System.Windows.Forms.PaintEventHandler(this.glControl_Paint);
this.glControl.Resize += new System.EventHandler(this.glControl_Resize);
@@ -436,7 +428,7 @@ namespace PrimWorkshop
private System.Windows.Forms.ToolStripMenuItem helpToolStripMenuItem;
private System.Windows.Forms.ToolStripMenuItem aboutToolStripMenuItem;
private System.Windows.Forms.SplitContainer splitContainer;
- private Tao.Platform.Windows.SimpleOpenGlControl glControl;
+ private OpenTK.GLControl glControl;
private System.Windows.Forms.TableLayoutPanel tableLayoutPanel1;
private System.Windows.Forms.HScrollBar scrollRoll;
private System.Windows.Forms.HScrollBar scrollPitch;
diff --git a/Programs/PrimWorkshop/frmPrimWorkshop.cs b/Programs/PrimWorkshop/frmPrimWorkshop.cs
index 33107d82..c52e279a 100644
--- a/Programs/PrimWorkshop/frmPrimWorkshop.cs
+++ b/Programs/PrimWorkshop/frmPrimWorkshop.cs
@@ -1,13 +1,11 @@
using System;
using System.Collections.Generic;
-using System.ComponentModel;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Windows.Forms;
-using Tao.OpenGl;
-using Tao.Platform.Windows;
using ICSharpCode.SharpZipLib.Zip;
+using OpenTK.Graphics.OpenGL;
using OpenMetaverse;
using OpenMetaverse.StructuredData;
using OpenMetaverse.Imaging;
@@ -35,16 +33,15 @@ namespace PrimWorkshop
public frmPrimWorkshop()
{
InitializeComponent();
- glControl.InitializeContexts();
- Gl.glShadeModel(Gl.GL_SMOOTH);
- Gl.glClearColor(0f, 0f, 0f, 0f);
+ GL.ShadeModel(ShadingModel.Smooth);
+ GL.ClearColor(Color.Black);
- Gl.glClearDepth(1.0f);
- Gl.glEnable(Gl.GL_DEPTH_TEST);
- Gl.glDepthMask(Gl.GL_TRUE);
- Gl.glDepthFunc(Gl.GL_LEQUAL);
- Gl.glHint(Gl.GL_PERSPECTIVE_CORRECTION_HINT, Gl.GL_NICEST);
+ GL.ClearDepth(1f);
+ GL.Enable(EnableCap.DepthTest);
+ GL.DepthMask(true);
+ GL.DepthFunc(DepthFunction.Lequal);
+ GL.Hint(HintTarget.PerspectiveCorrectionHint, HintMode.Nicest);
TexturePointers[0] = 0;
@@ -81,32 +78,33 @@ namespace PrimWorkshop
private void glControl_Paint(object sender, PaintEventArgs e)
{
- Gl.glClear(Gl.GL_COLOR_BUFFER_BIT | Gl.GL_DEPTH_BUFFER_BIT);
- Gl.glLoadIdentity();
+ GL.Clear(ClearBufferMask.ColorBufferBit | ClearBufferMask.DepthBufferBit);
+ GL.LoadIdentity();
// Setup wireframe or solid fill drawing mode
if (Wireframe)
- Gl.glPolygonMode(Gl.GL_FRONT_AND_BACK, Gl.GL_LINE);
+ GL.PolygonMode(MaterialFace.FrontAndBack, PolygonMode.Line);
else
- Gl.glPolygonMode(Gl.GL_FRONT, Gl.GL_FILL);
+ GL.PolygonMode(MaterialFace.Front, PolygonMode.Fill);
Vector3 center = Vector3.Zero;
- Glu.gluLookAt(
- center.X, (double)scrollZoom.Value * 0.1d + center.Y, center.Z,
- center.X, center.Y, center.Z,
- 0d, 0d, 1d);
+ OpenTK.Matrix4 lookAt = OpenTK.Matrix4.LookAt(
+ center.X, scrollZoom.Value * 0.1f + center.Y, center.Z,
+ center.X, center.Y, center.Z,
+ 0f, 0f, 1f);
+ GL.LoadMatrix(ref lookAt);
// Push the world matrix
- Gl.glPushMatrix();
-
- Gl.glEnableClientState(Gl.GL_VERTEX_ARRAY);
- Gl.glEnableClientState(Gl.GL_TEXTURE_COORD_ARRAY);
+ GL.PushMatrix();
+
+ GL.EnableClientState(ArrayCap.VertexArray);
+ GL.EnableClientState(ArrayCap.TextureCoordArray);
// World rotations
- Gl.glRotatef((float)scrollRoll.Value, 1f, 0f, 0f);
- Gl.glRotatef((float)scrollPitch.Value, 0f, 1f, 0f);
- Gl.glRotatef((float)scrollYaw.Value, 0f, 0f, 1f);
+ GL.Rotate((float)scrollRoll.Value, 1f, 0f, 0f);
+ GL.Rotate((float)scrollPitch.Value, 0f, 1f, 0f);
+ GL.Rotate((float)scrollYaw.Value, 0f, 0f, 1f);
if (Prims != null)
{
@@ -115,12 +113,12 @@ namespace PrimWorkshop
Primitive prim = Prims[i].Prim;
if (i == cboPrim.SelectedIndex)
- Gl.glColor3f(1f, 0f, 0f);
+ GL.Color3(1f, 0f, 0f);
else
- Gl.glColor3f(1f, 1f, 1f);
+ GL.Color3(1f, 1f, 1f);
// Individual prim matrix
- Gl.glPushMatrix();
+ GL.PushMatrix();
// The root prim position is sim-relative, while child prim positions are
// parent-relative. We want to apply parent-relative translations but not
@@ -128,12 +126,12 @@ namespace PrimWorkshop
if (Prims[i].Prim.ParentID != 0)
{
// Apply prim translation and rotation
- Gl.glMultMatrixf(Math3D.CreateTranslationMatrix(prim.Position));
- Gl.glMultMatrixf(Math3D.CreateRotationMatrix(prim.Rotation));
+ GL.MultMatrix(Math3D.CreateTranslationMatrix(prim.Position));
+ GL.MultMatrix(Math3D.CreateRotationMatrix(prim.Rotation));
}
// Prim scaling
- Gl.glScalef(prim.Scale.X, prim.Scale.Y, prim.Scale.Z);
+ GL.Scale(prim.Scale.X, prim.Scale.Y, prim.Scale.Z);
// Draw the prim faces
for (int j = 0; j < Prims[i].Faces.Count; j++)
@@ -142,7 +140,7 @@ namespace PrimWorkshop
{
// This prim is currently selected in the dropdown
//Gl.glColor3f(0f, 1f, 0f);
- Gl.glColor3f(1f, 1f, 1f);
+ GL.Color3(1f, 1f, 1f);
if (j == cboFace.SelectedIndex)
{
@@ -156,7 +154,7 @@ namespace PrimWorkshop
else
{
// This prim is not currently selected in the dropdown
- Gl.glColor3f(1f, 1f, 1f);
+ GL.Color3(1f, 1f, 1f);
}
#region Texturing
@@ -169,51 +167,52 @@ namespace PrimWorkshop
// Set the color to solid white so the texture is not altered
//Gl.glColor3f(1f, 1f, 1f);
// Enable texturing for this face
- Gl.glEnable(Gl.GL_TEXTURE_2D);
+ GL.Enable(EnableCap.Texture2D);
}
else
{
- Gl.glDisable(Gl.GL_TEXTURE_2D);
+ GL.Disable(EnableCap.Texture2D);
}
// Bind the texture
- Gl.glBindTexture(Gl.GL_TEXTURE_2D, data.TexturePointer);
+ GL.BindTexture(TextureTarget.Texture2D, data.TexturePointer);
#endregion Texturing
- Gl.glTexCoordPointer(2, Gl.GL_FLOAT, 0, data.TexCoords);
- Gl.glVertexPointer(3, Gl.GL_FLOAT, 0, data.Vertices);
- Gl.glDrawElements(Gl.GL_TRIANGLES, data.Indices.Length, Gl.GL_UNSIGNED_SHORT, data.Indices);
+ GL.TexCoordPointer(2, TexCoordPointerType.Float, 0, data.TexCoords);
+ GL.VertexPointer(3, VertexPointerType.Float, 0, data.Vertices);
+ GL.DrawElements(BeginMode.Triangles, data.Indices.Length, DrawElementsType.UnsignedShort, data.Indices);
}
// Pop the prim matrix
- Gl.glPopMatrix();
+ GL.PopMatrix();
}
}
// Pop the world matrix
- Gl.glPopMatrix();
+ GL.PopMatrix();
+
+ GL.DisableClientState(ArrayCap.TextureCoordArray);
+ GL.DisableClientState(ArrayCap.VertexArray);
- Gl.glDisableClientState(Gl.GL_TEXTURE_COORD_ARRAY);
- Gl.glDisableClientState(Gl.GL_VERTEX_ARRAY);
-
- Gl.glFlush();
+ GL.Flush();
}
private void glControl_Resize(object sender, EventArgs e)
{
- Gl.glClearColor(0.39f, 0.58f, 0.93f, 1.0f);
+ GL.ClearColor(0.39f, 0.58f, 0.93f, 1.0f);
- Gl.glViewport(0, 0, glControl.Width, glControl.Height);
+ GL.Viewport(0, 0, glControl.Width, glControl.Height);
- Gl.glPushMatrix();
- Gl.glMatrixMode(Gl.GL_PROJECTION);
- Gl.glLoadIdentity();
+ GL.PushMatrix();
+ GL.MatrixMode(MatrixMode.Projection);
+ GL.LoadIdentity();
- Glu.gluPerspective(50.0d, 1.0d, 0.1d, 256d);
+ OpenTK.Matrix4 perspectiveMatrix = OpenTK.Matrix4.CreatePerspectiveFieldOfView(50.0f, 1.0f, 0.1f, 256f);
+ GL.LoadMatrix(ref perspectiveMatrix);
- Gl.glMatrixMode(Gl.GL_MODELVIEW);
- Gl.glPopMatrix();
+ GL.MatrixMode(MatrixMode.Modelview);
+ GL.PopMatrix();
}
#endregion GLControl Callbacks
@@ -428,18 +427,19 @@ namespace PrimWorkshop
Bitmap bitmap = new Bitmap(data.Texture);
bitmap.RotateFlip(RotateFlipType.RotateNoneFlipY);
Rectangle rectangle = new Rectangle(0, 0, bitmap.Width, bitmap.Height);
- BitmapData bitmapData = bitmap.LockBits(rectangle, ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
+ BitmapData bitmapData = bitmap.LockBits(rectangle, ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
- Gl.glGenTextures(1, out data.TexturePointer);
- Gl.glBindTexture(Gl.GL_TEXTURE_2D, data.TexturePointer);
+ GL.GenTextures(1, out data.TexturePointer);
+ GL.BindTexture(TextureTarget.Texture2D, data.TexturePointer);
- Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_LINEAR_MIPMAP_LINEAR);
- Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_LINEAR);
- Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_WRAP_S, Gl.GL_REPEAT);
- Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_WRAP_T, Gl.GL_REPEAT);
- Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_GENERATE_MIPMAP, Gl.GL_TRUE);
-
- Glu.gluBuild2DMipmaps(Gl.GL_TEXTURE_2D, Gl.GL_RGB8, bitmap.Width, bitmap.Height, Gl.GL_BGR, Gl.GL_UNSIGNED_BYTE, bitmapData.Scan0);
+ GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)All.LinearMipmapLinear);
+ GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)All.Linear);
+ GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapS, (int)All.ClampToEdge);
+ GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapT, (int)All.ClampToEdge);
+ GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.GenerateMipmap, 1);
+
+ OpenTK.Graphics.Glu.Build2DMipmap(OpenTK.Graphics.TextureTarget.Texture2D, (int)OpenTK.Graphics.PixelInternalFormat.Rgb8,
+ bitmap.Width, bitmap.Height, OpenTK.Graphics.PixelFormat.Bgr, OpenTK.Graphics.PixelType.UnsignedByte, bitmapData.Scan0);
bitmap.UnlockBits(bitmapData);
bitmap.Dispose();
@@ -510,19 +510,20 @@ namespace PrimWorkshop
bitmap.RotateFlip(RotateFlipType.RotateNoneFlipY);
// Create the GL texture space
- Gl.glGenTextures(1, TexturePointers);
+ GL.GenTextures(1, TexturePointers);
Rectangle rectangle = new Rectangle(0, 0, bitmap.Width, bitmap.Height);
- BitmapData bitmapData = bitmap.LockBits(rectangle, ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);
+ BitmapData bitmapData = bitmap.LockBits(rectangle, ImageLockMode.ReadOnly, System.Drawing.Imaging.PixelFormat.Format24bppRgb);
- Gl.glBindTexture(Gl.GL_TEXTURE_2D, TexturePointers[0]);
+ GL.BindTexture(TextureTarget.Texture2D, TexturePointers[0]);
- Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_LINEAR_MIPMAP_LINEAR);
- Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_LINEAR);
- Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_WRAP_S, Gl.GL_CLAMP_TO_EDGE);
- Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_WRAP_T, Gl.GL_CLAMP_TO_EDGE);
- Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_GENERATE_MIPMAP, Gl.GL_TRUE);
+ GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMinFilter, (int)All.LinearMipmapLinear);
+ GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureMagFilter, (int)All.Linear);
+ GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapS, (int)All.ClampToEdge);
+ GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.TextureWrapT, (int)All.ClampToEdge);
+ GL.TexParameter(TextureTarget.Texture2D, TextureParameterName.GenerateMipmap, 1);
- Glu.gluBuild2DMipmaps(Gl.GL_TEXTURE_2D, Gl.GL_RGB8, bitmap.Width, bitmap.Height, Gl.GL_BGR, Gl.GL_UNSIGNED_BYTE, bitmapData.Scan0);
+ OpenTK.Graphics.Glu.Build2DMipmap(OpenTK.Graphics.TextureTarget.Texture2D, (int)OpenTK.Graphics.PixelInternalFormat.Rgb8,
+ bitmap.Width, bitmap.Height, OpenTK.Graphics.PixelFormat.Bgr, OpenTK.Graphics.PixelType.UnsignedByte, bitmapData.Scan0);
bitmap.UnlockBits(bitmapData);
bitmap.Dispose();
diff --git a/Programs/PrimWorkshop/packages.config b/Programs/PrimWorkshop/packages.config
index ad90cab2..b4c3de3b 100644
--- a/Programs/PrimWorkshop/packages.config
+++ b/Programs/PrimWorkshop/packages.config
@@ -1,4 +1,8 @@
+
+
+
+
\ No newline at end of file
diff --git a/bin/Tao.OpenGl.dll b/bin/Tao.OpenGl.dll
deleted file mode 100755
index 8eb040e6..00000000
Binary files a/bin/Tao.OpenGl.dll and /dev/null differ
diff --git a/bin/Tao.Platform.Windows.dll b/bin/Tao.Platform.Windows.dll
deleted file mode 100755
index dea153db..00000000
Binary files a/bin/Tao.Platform.Windows.dll and /dev/null differ