|
From: Rapthor <ra...@ly...> - 2007-01-06 19:47:43
|
Hello,
I'm frustrated ... I am using CsGL with Visual Studio Express C# and it =
renders poorly. The performance on a 2 GHz system is not worth it. Am I =
doing something wrong? I am rendering some very simple terrain with few =
polygons. A similar example runs at more than 30 fps in JAVA with JOGL.
Here is the C# code for my glDraw()-method:
public override void glDraw()
{
processKeys();
calcCamera();
nowTime =3D Environment.TickCount;
totalTime =3D nowTime - lastTime;
lastTime =3D nowTime;
if (totalTime =3D=3D 0)
fps =3D 25;
else
fps =3D (float) Math.Round(1.0f / ((float)totalTime/1000f), 0, =
MidpointRounding.AwayFromZero);
GL.glLoadIdentity(); // Reset The Current Modelview Matrix=20
GL.gluLookAt(camPosition[0], camPosition[1], camPosition[2],
camPosition[0] + camDirection[0], camPosition[1] + camDirection[1], =
camPosition[2] + camDirection[2],
camUpVector[0], camUpVector[1], camUpVector[2]);
GL.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); // =
Clear The Screen And The Depth Buffer
GL.glEnable(GL.GL_NORMALIZE);
GL.glBegin(GL.GL_TRIANGLES);
// length of the array is about 9000
for (int i =3D 0; i < indexArray.Length; i++)
{
GL.glNormal3f(normals[i / 3].X, normals[i / 3].Y, normals[i / =
3].Z);
GL.glVertex3f(pointArray[indexArray[i]].X, =
pointArray[indexArray[i]].Y, pointArray[indexArray[i]].Z);
}
GL.glEnd();
GL.glFlush();
this.SwapBuffer(); // swap Buffers
}
I'm using static methods from GL all the time. I hope it's ok to do so.
Can anybody please help me? Have you some experience how to speed up =
applications in C#?
I am using a BackgroundWorkerThread to render continously:
...
bgw =3D new BackgroundWorker();
this.bgw.RunWorkerCompleted +=3D new =
System.ComponentModel.RunWorkerCompletedEventHandler(this.bgw_RunWorkerCo=
mpleted);
this.bgw.RunWorkerAsync();
....
private void bgw_RunWorkerCompleted(object sender, =
RunWorkerCompletedEventArgs e)
{
while (!this.Disposing)
{
view.Refresh();
//view.glDraw();
Application.DoEvents();
}
}
|