openGL
-
-
wie kann ich meiner z.b.: openGL.h , sagen dass im rechteck 0,0 zu 500,500 dargestellt werden soll ??
//EDIT: was soll ich damit machen ??
-
-
wie wende ich viewport denn an ?
etwa so:
int DrawGLScene(GLvoid) // Here's Where We Do All The Drawing { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glTranslatef(-1.5f,0.0f,-6.0f); glBegin(GL_POLYGON); glVertex2i(1,0); glVertex2i(5,0); glVertex2i(10,0); glVertex2i(50,0); glEnd(); glViewport(0,0,100,100); return TRUE; }
-
Natürlich *bevor* du was renderst...
Anyway. Ich denke du solltest auf jeden Fall mal das hier durchlesen und dir den Inhalt zu Herzen nehmen. Und dann verwend einfach das.
-
der grund weshalb ich openGL nutzen will ist der, dass ich das Gouraud-Shading brauche !!
wenn das in opentk auch enthalten ist dann ist das natürlich ok wenn nicht dann brauch ich was anderes !mfg
-
OpenTK ist ein .NET Wrapper um OpenGL. Wobei meine Empfehlung für Windows sowieso Direct3D lauten würde.
Aber wenn du nur ein Rechteck malen willst, ist beides aber absoluter Overkill. Warum macht du deine Oberfläche nicht einfach mit WPF!?
-
ich habs jetzt davor geschrieben aber es erscheint immer noch nichts !
int DrawGLScene(GLvoid) // Here's Where We Do All The Drawing { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glViewport(0,0,300,300); //glTranslatef(-1.5f,0.0f,-6.0f); glBegin(GL_POLYGON); glVertex2f(1,0); glVertex2f(50,230); glVertex2f(100,110); glVertex2f(150,150); glEnd(); return TRUE; }
das einzige kriterium nach dem ich gehe ist das gouraud-shading...das ist mit das wichtigste was ich brauche. An zweiter stelle dann: das program ist fertig und in c++ windows forms bereits geschrieben ! wenns nicht anders geht dann schreib ichs eben um aber ersmal möchte ich in meiner aktuellen umgebung bleiben !
-
Wo erzeugst du denn deinen GL Context? Und wofür brauchst du denn das Gouraud Shading so verzweifelt?
-
stichpunkt kontext, wo bekomm ich den her und wie programmier ich den !
ich möchte spannungen auf einer glasscheibe anzeigen und mit gdi+ geht das leider nicht. für nen besseren überblick : Das Programm
-
derLe0n schrieb:
stichpunkt kontext, wo bekomm ich den her und wie programmier ich den !
Wie gesagt...Overkill
derLe0n schrieb:
ich möchte spannungen auf einer glasscheibe anzeigen und mit gdi+ geht das leider nicht.
Wieso sollte das nicht gehen!? Wenn ich das richtig verstehe, willst du doch nur ein Rechteck malen, wobei sich die Farbe jedes Pixels nach irgendeiner Formel errechnet!?
Mach dir eine Bitmap, hol dir über LockBits nen Pointer auf die Pixel, mal dein Rechteck rein, unlocken und schon kannst du dein Bildchen auf deine Form malen.
-
ok das ist schonmal ein guter ansatz, jetzt magst du mir doch sicher auch noch erklären wie ich z.b den punkt 150,100 in der bitmap von 500,500 rot markiere.
-
LockBits liefert dir eine BitmapData Struktur in der du einen Pointer auf den Anfang der ersten Scanline sowie den Stride (Länge einer Scanline in Byte) findest. Angenommen dein Farbformat ist Format32bppRgb, bekommst du so einen Pointer auf den Pixel an Stelle (x, y):
System::Byte* p = static_cast<System::Byte*>(static_cast<void*>(bmpdata->Scan0)) + y * bmpdata->Stride + 4 * x;
-
bmpdata ?
-
...ist natürlich die BitmapData die du von LockBits() bekommen hast...
-
wie mach ich das ?
-
Wo genau liegt das Problem, hast du noch nie mit System.Drawing gearbeitet?
-
ich habe noch nie mit bitmaps gearbeitet !
-
Naja du malst die Bitmap einfach mit DrawImage() auf dein Graphics Objekt...
-
achsoo