[n3xt-D] un moteur pour PureBasic

Généralités sur la programmation 3D
Anonyme

Message par Anonyme »

merci , c'etait sous mes yeux pourtant :D

une autre question sur l'architecture d'un mesh.

je vois souvent :
Fonction...(Param,Param n , num_buffer.l=0)
cela indique que l'on peut superposé des buffers ?
la texture du light mapping etant différente par rapport a la texture du mesh
la technique de mapping étant aussi différente , les coordonnées de textures ne peuvent pas être les mêmes.

Faut il recréer un second buffer a qui on lui assigne les même vertice que le buffer original avec des UV et un matérial différent ?
tmyke
Messages : 1554
Inscription : lun. 24/juil./2006 6:44
Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E

Message par tmyke »

Pour ce qui est des meshBuffers. Prenons par exemple un objet 3DS que nous chargeons.
Il s'agit d'un mesh, mais qui comprend plusieurs éléments comme les roues, le châssis, etc...
L'objet est donc composé de plusieurs buffers qui possède de ce fait leur propre géométrie,
ainsi que leur propre material/Textures.
Voilà pourquoi, dans les instructions de traitement des vertices par exemple, il est parfois
bon de spécifier le numéro du buffer considéré. L'exemple 007 montre comment créer 'manuellement'
un mesh avec deux buffers. ;)

Pour ce qui est du lightmapping. Dans ce cas, la théorie, c'est que la texture générée est placée
sur les mesh en 'surcouche' de la texture principale. De plus, effectivement, souvent les coordonnées
de textures diffère de celle de la texture princpale du mesh. Il faut donc dans ce cas des mesh avec
2 coordonnées de texture par vertices.
Avec N3xtD, pour créer ce genre de mesh, il faut faire un iAddBufferMesh(*mesh, 1) et non 0.
En suite on peux modifier indépendamment les coordonnées de texture soit avec l'instruction iTexCoordMeshBuffer()
pour le premier canal, ou alors iTexCoord2MeshBuffer() pour le second.

Voilà, j'espère ne pas avoir été trop confus.
Force et sagesse...
tmyke
Messages : 1554
Inscription : lun. 24/juil./2006 6:44
Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E

Message par tmyke »

Bon, comme je suis à la maison contrairement à ce que je pensais, je t'ai envoyé par MP
les deux liens vers la version de N3xtD avec XEffect d'intégré.

Dans l'archive pour PureBasic, il y a deux petits exemples qui me servent de test pour voir
comment ce la se passe.

Les noms des instructions sont temporaires, il va falloir voir comment nommer tout cela de
façon intuitive.

Sinon, cela reste des shaders, et les résultat sur certaines machines (bas de gamme ou anciennes) sont
très inégaux.

A voir donc. ;)
Force et sagesse...
cha0s
Messages : 681
Inscription : sam. 05/mars/2005 16:09

Message par cha0s »

Un petit soucis avec l'exemple 1 sur le package c++

Code : Tout sélectionner

chaos@chaos:~/Bureau/n3xtD_C++/samples/tuto1$ make
Makefile:47: Building...
g++ -I../../irrlicht-1.5/include -I/usr/X11R6/include  -O3 -ffast-math main.cpp -o ../../bin/Linux/01.HelloWorld -L../../irrlicht-1.5/lib/Linux -lIrrlicht -L/usr/X11R6/lib -lGL -lXxf86vm -lXext -lX11
In file included from ../../include/n3xtd_TerrainNode.h:15,
                 from ../../include/HeaderC.h:10,
                 from main.cpp:2:
../../include/n3xtd_List.h:26: attention : ‘typedef’ was ignored in this declaration
/tmp/cchYYA9N.o: In function `main':
main.cpp:(.text+0x11d): undefined reference to `iInitEngine'
main.cpp:(.text+0x155): undefined reference to `iCreateScreen'
main.cpp:(.text+0x161): undefined reference to `iDrawScene'
main.cpp:(.text+0x169): undefined reference to `iEndScene'
main.cpp:(.text+0x19d): undefined reference to `iBeginScene'
collect2: ld a retourné 1 code d'état d'exécution
make: *** [all_linux] Erreur 1
Anonyme

Message par Anonyme »

tu as le makefile ?
cha0s
Messages : 681
Inscription : sam. 05/mars/2005 16:09

Message par cha0s »

j'ai eu une illumination pendant l'apero donc j'ai recompilé les sources de Next pour avoir un .a que j'ai copié dans le répertoire /usr/bin puis j'ai ajouté -lN3xtD en directive de compilation.

Problème avec newton ?

Code : Tout sélectionner

chaos@chaos:~/Bureau/n3xtD_C++/samples/tuto1$ make
Makefile:47: Building...
g++ -I../../irrlicht-1.5/include -I/usr/X11R6/include  -O3 -ffast-math main.cpp -o ../../bin/Linux/01.HelloWorld -L../../irrlicht-1.5/lib/Linux -lIrrlicht -L/usr/X11R6/lib -lGL -lXxf86vm -lXext -lX11 -lN3xtD
In file included from ../../include/n3xtd_TerrainNode.h:15,
                 from ../../include/HeaderC.h:10,
                 from main.cpp:2:
../../include/n3xtd_List.h:26: attention : ‘typedef’ was ignored in this declaration
/usr/lib/gcc/i486-linux-gnu/4.3.3/../../../../lib/libN3xtD.a(n3xtd_PhysNewton.o): In function `iThreadsCountPhysic':
/home/chaos/Bureau/SourceEngine/source/n3xtd/n3xtd_PhysNewton.cpp:167: undefined reference to `NewtonSetThreadsCount'
/usr/lib/gcc/i486-linux-gnu/4.3.3/../../../../lib/libN3xtD.a(n3xtd_PhysNewton.o): In function `iPhysicThreadsCount':
/home/chaos/Bureau/SourceEngine/source/n3xtd/n3xtd_PhysNewton.cpp:154: undefined reference to `NewtonGetThreadsCount'
/usr/lib/gcc/i486-linux-gnu/4.3.3/../../../../lib/libN3xtD.a(n3xtd_PhysNewton.o): In function `iSetWorldSize':
/home/chaos/Bureau/SourceEngine/source/n3xtd/n3xtd_PhysNewton.cpp:102: undefined reference to `NewtonSetWorldSize'
/usr/lib/gcc/i486-linux-gnu/4.3.3/../../../../lib/libN3xtD.a(n3xtd_PhysNewton.o): In function `iUpdatePhysic':
/home/chaos/Bureau/SourceEngine/source/n3xtd/n3xtd_PhysNewton.cpp:86: undefined reference to `NewtonUpdate'
/usr/lib/gcc/i486-linux-gnu/4.3.3/../../../../lib/libN3xtD.a(n3xtd_PhysNewton.o): In function `iInitPhysic':
/home/chaos/Bureau/SourceEngine/source/n3xtd/n3xtd_PhysNewton.cpp:77: undefined reference to `NewtonCreate'
/usr/lib/gcc/i486-linux-gnu/4.3.3/../../../../lib/libN3xtD.a(n3xtd_PhysNewton.o): In function `iFreePhysic':
/home/chaos/Bureau/SourceEngine/source/n3xtd/n3xtd_PhysNewton.cpp:69: undefined reference to `NewtonDestroy'
collect2: ld a retourné 1 code d'état d'exécution
make: *** [all_linux] Erreur 1
le makefile

Code : Tout sélectionner

# Makefile for Irrlicht Examples

# It's usually sufficient to change just the target name and source file list

# and be sure that CXX is set to a valid compiler



# Name of the executable created (.exe will be added automatically if necessary)

Target := 01.HelloWorld

# List of source files, separated by spaces

Sources := main.cpp

# Path to Irrlicht directory, should contain include/ and lib/

IrrlichtHome := ../../irrlicht-1.5

# Path for the executable. Note that Irrlicht.dll should usually also be there for win32 systems

BinPath = ../../bin/$(SYSTEM)



# general compiler settings (might need to be set when compiling the lib, too)

# preprocessor flags, e.g. defines and include paths

USERCPPFLAGS = 

# compiler flags such as optimization flags

USERCXXFLAGS = -O3 -ffast-math

#USERCXXFLAGS = -g -Wall

# linker flags such as additional libraries and link paths

USERLDFLAGS =



####

#no changes necessary below this line

####



CPPFLAGS = -I$(IrrlichtHome)/include -I/usr/X11R6/include $(USERCPPFLAGS)

CXXFLAGS = $(USERCXXFLAGS)

LDFLAGS = $(USERLDFLAGS)



#default target is Linux

all: all_linux



# target specific settings

all_linux all_win32 static_win32: LDFLAGS = -L$(IrrlichtHome)/lib/$(SYSTEM) -lIrrlicht

all_linux: LDFLAGS += -L/usr/X11R6/lib$(LIBSELECT) -lGL -lXxf86vm -lXext -lX11 -lN3xtD

all_linux clean_linux: SYSTEM=Linux

all_win32 clean_win32 static_win32: SYSTEM=Win32-gcc

all_win32 clean_win32 static_win32: SUF=.exe

static_win32: CPPFLAGS += -D_IRR_STATIC_LIB_

all_win32: LDFLAGS += -lopengl32 -lm

static_win32: LDFLAGS += -lgdi32 -lwinspool -lcomdlg32 -lole32 -loleaut32 -luuid -lodbc32 -lodbccp32 -lopengl32

# name of the binary - only valid for targets which set SYSTEM

DESTPATH = $(BinPath)/$(Target)$(SUF)



all_linux all_win32 static_win32:

	$(warning Building...)

	$(CXX) $(CPPFLAGS) $(CXXFLAGS) $(Sources) -o $(DESTPATH) $(LDFLAGS)



clean: clean_linux clean_win32

	$(warning Cleaning...)



clean_linux clean_win32:

	@$(RM) $(DESTPATH)



.PHONY: all all_win32 static_win32 clean clean_linux clean_win32



#multilib handling

ifeq ($(HOSTTYPE), x86_64)

LIBSELECT=64

endif

#solaris real-time features

ifeq ($(HOSTTYPE), sun4)

LDFLAGS += -lrt

endif
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Et en partant de ton idée : si tu ajoutais '-lNewton' ?
Anonyme

Message par Anonyme »

Comme Progi1984 , rajoute -lNewton ou -lnewton je sais plus

se qui me choque dans ton makefile
c'est que c'est n3xtd qui fait appel à irrlicht , pas l'inverse. il sors d'ou le makefile?
cha0s
Messages : 681
Inscription : sam. 05/mars/2005 16:09

Message par cha0s »

c'est le package fait par tmyke. Sinon pas de lib Newton fournit avec next ou irrlicht en plus aucun dépôt ubuntu la dessus
tmyke
Messages : 1554
Inscription : lun. 24/juil./2006 6:44
Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E

Message par tmyke »

Heu, je ne suis plus un spécialiste Linux, mais ceci dit le makefile que tu as mis au dessus n'est pas l'actuel du package
de N3xtD, quand à le librairie Newton elle est dans le répertoire 'source/n3xtd/Newton2.01/Linux'.
Force et sagesse...
cha0s
Messages : 681
Inscription : sam. 05/mars/2005 16:09

Message par cha0s »

tmyke a écrit :Heu, je ne suis plus un spécialiste Linux, mais ceci dit le makefile que tu as mis au dessus n'est pas l'actuel du package
de N3xtD, quand à le librairie Newton elle est dans le répertoire 'source/n3xtd/Newton2.01/Linux'.
Yea pour newton je testerais quand je serait a nouveau dans ma Normandie :p, Mais heu pour le package je l'ai récupéré hier sur ton Site Oo.

@Cpl.Bator: y'a deux jour j'ai croisé un camion "CLP Trans" sa ma beaucoup fait rigolé ^^'.
Anonyme

Message par Anonyme »

C'etait pô moi ^^

Ca aurais pu si j'avais remporté mon marché ^^
dur loi de la jungle capitaliste ! :D
tmyke
Messages : 1554
Inscription : lun. 24/juil./2006 6:44
Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E

Message par tmyke »

Au fait Cpl.Bator, as-tu eu le temps de zieuter le package avec les XEffect ?
Force et sagesse...
Anonyme

Message par Anonyme »

oui pas de problèmes particuliers , sinon je te l'aurais signalé.
j'ai pas fait encore de tests plus "poussé" , j'aurais plus de temps dimanche pour cela.

ps: le truc qui n'emmerde , c'est le deltamouse :D
tmyke
Messages : 1554
Inscription : lun. 24/juil./2006 6:44
Localisation : vosges (France) 47°54'39.06"N 6°20'06.39"E

Message par tmyke »

Cpl.Bator a écrit :oui pas de problèmes particuliers , sinon je te l'aurais signalé.
j'ai pas fait encore de tests plus "poussé" , j'aurais plus de temps dimanche pour cela.
OK ;)
Cpl.Bator a écrit :ps: le truc qui n'emmerde , c'est le deltamouse :D
J'ai fait le changement demandé, c'est dispo dans la dernière mise à jours, la seule chose que je n'ai pas
implanté, c'est la continuité des GetMouse en dehors de la fenêtre active, qui est moins évident ;)
Force et sagesse...
Répondre