Folgende Frage:
Ich habe jetzt schon einige Dinge in meinem Header( Shadersupport, Supporten von vielen Contexten, Drawfunktionen,..... ), jetzt will ich Vertexinformationen im Speicher der Grafikkarte ablegen.
Das Problem ist natürlich das das auf unsafe Code hinauslaufen würde!
Wie habt ihr das gelößt, wäre über Code sehr Glücklich! Zudem auch wenn es nur mit Pointern geht, da ich bisher nicht mit ihnen in C# gearbeitet habe( Weiss zwar das * der Pointer ist aber mehr auch nicht )!
mfg
Speedmaster
_________________ Shareholder und Leitender Entwickler bei Pipedream-Games.
Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.
Registriert: Di Nov 26, 2002 22:12 Beiträge: 259 Wohnort: Dresden
Lars hat vor einiger Zeit einen Header für C# 2.0 veröffentlicht. Wenn du den ntuzt, kannst du komplett auf Pointer verzichten.
http://www.3d-seite.de/csopengl
_________________ Nichts auf der Welt ist so gerecht verteilt wie der Verstand. Denn jederman ist überzeugt, dass er genug davon habe.
Rene Descartes, frz. Mathematiker u. Philosoph, 1596-1650
Lars hat vor einiger Zeit einen Header für C# 2.0 veröffentlicht. Wenn du den ntuzt, kannst du komplett auf Pointer verzichten. http://www.3d-seite.de/csopengl
Es ging mir dabei um die Übergabe der Vertexdaten an den Speicher der Grafikkarte, ohne diese im Hauptspeicher vorher abzulegen!
Den Header benutze ich bereits!
_________________ Shareholder und Leitender Entwickler bei Pipedream-Games.
Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.
gl.BufferData bzw. gl.BufferSubData hat eine Überladung mit System.Array als Parameter. Da kann man alle Arrays dann übergeben.
Edit: glMapBufferARB gibt einen IntPtr zurück. In der Klasse System.Runtime.InteropServices.Marshal gibt es Methoden direkt an bestimmte Addressen zu schreiben. Ansonsten bleibt wohl nur noch die Sache mit dem unsafe.
IntPtr hat die Methode ToPointer mit der man dann einen (void*) Zeiger bekommen und auf seinen Type casten kann.
Vector* v = (Vector*)gl.MapBufferARB(..., ..., ..., IntPtr.Zero).ToPointer();
Aber was spricht eigentlich dageben gl.BufferData zu nutzen ?
P.s.: Mag an der Uhrzeit liegen das ich nicht auf einen grünen zweig komme!
_________________ Shareholder und Leitender Entwickler bei Pipedream-Games.
Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.
Edit: Es scheint .NET wirklich schwerzufallen mein Konzept durchzulassen!
_________________ Shareholder und Leitender Entwickler bei Pipedream-Games.
Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.
Nach zahlreichen Fehlern( Zum großen Teil unvorhergesehen ) bin ich an dem Punkt angelangt wo er mir nichts Zeichnet( Toll nicht? ) ausser einen Punkt beim Modus gl.POINTS( Noch toller? ):
Da ich das erste mal mit VBO's Arbeite( Mit den meisten Themen habe ich mich bisher nur Theoretisch beschäftigt ), glaube ich das ihr den Fehler vielleicht besser erkennt! Hier mal der Code meiner VBO Verwaltung:
Code:
using System;
using System.Collections.Generic;
using System.Text;
using OpenGL.Header;
using OpenGL.Device.nVertexBufferObject.CustomVertex;
using System.Runtime.InteropServices;
namespace OpenGL.Device.nVertexBufferObject
{
class VertexBufferObject : IDisposable
{
private int xVBO;
private int xSize;
private int FSize;
private int xFormat;
public int VBO
{
get { return xVBO; }
}
publicint Size
{
get { return xSize; }
}
publicintFormat
{
get { return xFormat; }
}
publicint FormatSize
{
get { return FSize; }
}
public VertexBufferObject()
{
xVBO = gl.GenBufferARB();
}
public void Dispose()
{
gl.DeleteBuffersARB(1,new int[] {xVBO});
}
public void BufferData<VertexFormat>(List<VertexFormat> Data,int pFormat,int pFormatSize)
Der Code ist natürlich nicht der Ganze! LastError ist immer Leer( Maybe, vielleicht funktioniert er auch nicht richtig? )!
_________________ Shareholder und Leitender Entwickler bei Pipedream-Games.
Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.
Sry das ich etwas nerve! Aber will endlich das überhaupt was läuft!
EDIT: Endlich, es läuft, und dazu noch flott! Das Verwaltete rumspielen mit OpenGL macht auch jetzt schon richtig Spass!
Jetzt kommt -> FramebufferObject
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
_________________ Shareholder und Leitender Entwickler bei Pipedream-Games.
Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.
Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.