Einzelnen Beitrag anzeigen

IceBube

Registriert seit: 9. Jul 2008
178 Beiträge
 
#6

AW: OpenGL glViewPort

  Alt Gestern, 14:43
Also ich würde gerne zeichnen "ausserhalb" von Render und das bis dahin gezeichnete soll aber erhalten bleiben.
Du kannst das aber auch in einem Array abspeichern und in der "Render-Funktion" dann umsetzen. Hab ich damals immer so gemacht. So in etwa..

Delphi-Quellcode:
type
TVector4 = Record
 x, y, z, w : single
end;


LinePoints = class // Oder Record
angle : TVector4
color : TVector4
start, ende : TVector4
end;

var MeinArray:Array of LinePoints

function rgba(r, g, b, a :single) : TVector4;
begin
 result.x := r/255; result.y := g/255; result.z := b/255; Result.w := a/100
end;

function Vector4(x, y, z, w :single) : TVector4;
begin
 result.x := x; result.y := y; result.z := z; Result.w := w
end;

function Vector2(x, y :single) : TVector4;
begin
 result.x := x; result.y := y; result.z := 0; Result.w := 0
end;

procedure BtnClick
begin
SetLength(MeinArray, Length(MeinARray)+1)
MeinARray[High(MeinArray)] := LinePoints.Create()
MeinArray[High(MeinArray)].Start := Vector2(Start.X, Start.Y)
MeinArray[High(MeinArray)].Ende := Vector2(Ende.X, Ende.Y)
MeinArray[High(MeinArray)].color := rgba(255, 255, 255, 100)
MeinArray[High(MeinArray)].angle := Vector4(0, 0, 1, 90)

procedure Render()
... GL / PROJECTION

for i = 0 To High(MeinArray) do
begin
glpushmatrix();
 // Anpassen des Origin mittels glTranslate...
 glrotateF(MeinArray[i].Angle.W, MeinArray[i].Angle.x, MeinArray[i].Angle.y, MeinArray[i].Angle.z)
 //
  glBegin(GL_LINES);
  glColor4fv(@(@MeinArray[i].color);
  glVertex2fv(@MeinArray[i].start);
  glVertex2fv(@(@MeinArray[i].ende);
  glEnd;
glPopmatrix();
end

... SWAP
end
lg

Geändert von IceBube (Gestern um 14:53 Uhr)
  Mit Zitat antworten Zitat