X_PUSHMARTIX und X_POPMATRIX evtl. noch zusätzlicher Befehl?

Previous topic - Next topic

Schranz0r

Hallo Gernot

Gibt es irgendeine möglichkeit Objekte wirklich zusammenzufügen?
Also ein "aus zwei mach ein Objekt".


X_PUSHMARTIX und X_POPMATRIX klebt die Objekte ja nur zusammen :(

Heute ein weiteren Minecraft Clon gesehen und der wurde in FreeBasic gemacht o.O
Kann so nicht angehen muss in GLB auch möglich sein!

EDIT: will bei sowas Vollspeed haben :) :

Code (glbasic) Select
// --------------------------------- //
// Project: chunks
// Start: Sunday, February 06, 2011
// IDE Version: 8.232


LOCAL phi,zoom = -100

CreateCube(1,1,RGB(0xff, 0x00, 0x00))


WHILE TRUE

X_MAKE3D 1,1000,45
X_CAMERA 0,0,zoom,0,0,0



X_ROTATION phi, 1,0,0
X_CULLMODE 1

X_PUSHMATRIX
FOR x = 0 TO 29
FOR y = 0 TO 29
FOR z = 0 TO 29

X_MOVEMENT x-15,y-15,z-15
X_DRAWOBJ 1,0

NEXT
NEXT
NEXT
X_POPMATRIX

INC phi
IF KEY(200)
INC zoom, 5
ELSEIF KEY(208)
DEC zoom , 5
ENDIF


X_MAKE2D

PRINT "FPS: "+FPS(), 10, 10

SHOWSCREEN
WEND
END


// ------------------------------------------------------------- //// ---  FPS  ---// ------------------------------------------------------------- //
FUNCTION FPS:
STATIC OldTimeReport$,FPSDat,TimeReport$,FPSd
OldTimeReport$=TimeReport$; FPSDat=FPSDat+1;
TimeReport$=PLATFORMINFO$("TIME")
IF OldTimeReport$<>TimeReport$; FPSd=FPSDat ; FPSDat=0; ENDIF
RETURN FPSd
ENDFUNCTION

// ------------------------------------------------------------- //
// -=# CREATECUBE #=-
// ------------------------------------------------------------- //
FUNCTION CreateCube: num, sz, col
// Diese Variablen sind als LOCAL definiert:
// num, sz,
sz=sz/2
X_OBJSTART num
// Front Face
X_OBJADDVERTEX sz, -sz, sz, 1, 0, col
X_OBJADDVERTEX -sz, -sz, sz, 0, 0, col-100
X_OBJADDVERTEX sz, sz, sz, 1, 1, col-100
X_OBJADDVERTEX -sz, sz, sz, 0, 1, col
X_OBJNEWGROUP
// Back Face
X_OBJADDVERTEX -sz, sz, -sz, 1, 1, col
X_OBJADDVERTEX -sz, -sz, -sz, 1, 0, col-100
X_OBJADDVERTEX sz, sz, -sz, 0, 1, col-100
X_OBJADDVERTEX sz, -sz, -sz, 0, 0, col
X_OBJNEWGROUP
// Top Face
X_OBJADDVERTEX -sz, sz, sz, 0, 0, col
X_OBJADDVERTEX -sz, sz, -sz, 0, 1, col-100
X_OBJADDVERTEX sz, sz, sz, 1, 0, col-100
X_OBJADDVERTEX sz, sz, -sz, 1, 1, col
X_OBJNEWGROUP
// Bottom Face
X_OBJADDVERTEX sz, -sz, -sz, 0, 1, col
X_OBJADDVERTEX -sz, -sz, -sz, 1, 1, col-100
X_OBJADDVERTEX sz, -sz, sz, 0, 0, col-100
X_OBJADDVERTEX -sz, -sz, sz, 1, 0, col
X_OBJNEWGROUP
// Right face
X_OBJADDVERTEX sz, sz, -sz, 1, 1, col
X_OBJADDVERTEX sz, -sz, -sz, 1, 0, col-100
X_OBJADDVERTEX sz, sz, sz, 0, 1, col-100
X_OBJADDVERTEX sz, -sz, sz, 0, 0, col
X_OBJNEWGROUP
// Left Face
X_OBJADDVERTEX -sz, -sz, sz, 1, 0, col
X_OBJADDVERTEX -sz, -sz, -sz, 0, 0, col-100
X_OBJADDVERTEX -sz, sz, sz, 1, 1, col-100
X_OBJADDVERTEX -sz, sz, -sz, 0, 1, col
X_OBJNEWGROUP
X_OBJEND

ENDFUNCTION // sz
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

Kitty Hello

so:

Code (glbasic) Select

X_OBJSTART

FOREACH v IN obj1[]
   X_OBJADDVERTEX v....
NEXT

FOREACH v IN obj2[]
   X_OBJADDVERTEX v....
NEXT

X_OBJEND


Schranz0r

Ja könnte ich so machen, nur bekomm ich dann das Texturproblem...
Ausserdem müsste ich abchecken das verdeckte Vertices nicht erstellt werden um Performance zu steigern.

Ich bekomm nen Anfall! Wie kann es sein, das es in Freebasic einer mit den OpenGL wrapper super zum laufen bringt...
Und ich scheiter schon am Objekte in Chunks zu drücken...  :'(


Brauche dringend Hilfe!
Wenn sich 1 oder 2 Leute bereit dazu erklären da mit zu tüfteln wär ich sehr dankbar.

Ich geb keine Ruhe bevor ich das nicht auch so hin bekomme!!!  :-[
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

Quentin

ähem, nur so eine Idee:

Du hast die Cubes ja auch sehr klein gewählt (1). Ergo werden da 27.000 Cubes am Bildschirm dargestellt. Wenn die Cubes größer sind, sind es doch eher nur ein paar hundert oder? Da GLBasic das Clipping selbst erledigt (ist dem so?), geht das auch deutlich flotter. Habe nur spasseshalber die Größe der Cubes mal auf 10 gesetzt und siehe da, die FPS gehen auf die voreingestellten 60 hoch. Ohne Vert-Sync vermutlich noch höher.

Wie würde das denn aussehen, wenn du die größeren Objekte als ddw-Dateien vorliegen hast?

backslider

kann man mit "x_settexture" nicht die Texture während des erstellens (zwischen x_objstart und x_objend) des Chunks auf die Würfel draufbacken, oder funktioniert das nur live im mainloop vor dem zeichnen?

Kitty Hello

Die Textur - da machst Du EINE Grafik, auf der alle Blockarten drauf sind.
Die Qubes haben dann eben die korrekten UV Werte um richtig dargestellt zu werden.

Quentin

das ist schon klar, aber X_SETTEXTURE hat nur nach X_MAKE3D einen Effekt, also i.d.R. innerhalb des Main-Loop.

backslider

Wie willst du vorallem von sonem Chunk aus Würfeln wieder einzelne Würfel bearbeiten (löschen, ändern, hinzufügen)? o.O

Kitty Hello

Nein. Es gibt nue 1x X_SETTEXTURE, weil: Nur eine Textur mit 5 verscheidenen Bildern drauf (Texture Atlas).

Schranz0r

Quote from: backslider on 2011-Feb-07
Wie willst du vorallem von sonem Chunk aus Würfeln wieder einzelne Würfel bearbeiten (löschen, ändern, hinzufügen)? o.O

Naja das wird zwischengespeichert in Dateien, bzw wird in diesen ausgelagert. Sollte das kleinere Problem sein.
Doch das zusammenfügen zu richtigen Chunks macht mir mehr probleme...
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

Kitty Hello


backslider

Bin ich auch für!  :good:
Irgendwie reden wir alle aneinander vorbei xD

Quentin

rofl
sieht fast so aus. Ich glaube, was Schranzor meint, ist ein echtes Zusammenfügen von 3D-Objekten
so wie

Code (glbasic) Select

object = X_MERGEOBJ(object1, object2)
...
X_DRAWOBJ object, 0


so habe ich es zumindest verstanden

Schranz0r

Genau sowas in der Richtung Quentin!

Doch das Problem ist dann immernoch die Textur an die richtige stelle zu bekommen...
Ich muss erstmal nen Test machen mit, keine Ahnung 2x2x2 Würfeln oder so und da nen guten Algo schreiben der verdeckte doppelte Vertices nicht erstellt. Also quasi nur die Hülle des Objects/Chunks.

Wie gesagt, bin nicht böse wenn da einer mit tüftelln will!  ;)

Wenns in Freebasic möglich ist, MUSS es in GLB auch gehn...
I <3 DGArray's :D

PC:
AMD Ryzen 7 3800X 16@4.5GHz, 16GB Corsair Vengeance LPX DDR4-3200 RAM, ASUS Dual GeForce RTX™ 3060 OC Edition 12GB GDDR6, Windows 11 Pro 64Bit, MSi Tomahawk B350 Mainboard

Kitty Hello

OK, damit sollte es aber geklärt sein, oder?

[attachment deleted by admin]