Registriert seit: 9. Jul 2008
178 Beiträge
|
AW: OpenGL glViewPort
4. Okt 2024, 15: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 ( 4. Okt 2024 um 15:53 Uhr)
|
|
Zitat
|