SimplyOpenGL2DDrawing

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
case
Messages : 1545
Inscription : lun. 10/sept./2007 11:13

Re: SimplyOpenGL2DDrawing

Message par case »

Non je vais pas me tapé des page de doc, aucun intérêt pour moi !

Code : Tout sélectionner

10 input '(idee$," saississez une idée ")
20 Print ( "purebasic forum "," aidez moi avec ma super idée "  + idee$)
30 If getreply("purebasic forum") = " on sait pas cherche un peu la doc" then Print ( "purebasic forum","je vais pas m'abaisser a lire des docs alors qu'on peut le faire a ma place") : Goto 10  
40 use getreply("purebasic forum",newmodule+idee$)  
50 try To use getreply("purebasic forum",newmodule+idee$)  
60 If stuck in (newmodule+idee$) then Print ( "purebasic forum ","je suis coince dans mon nouveau module") : Goto 20
70 Goto 50
:mrgreen:
sérieux tu peux pas dire les gars je vais pas lire des docs mais je compte sur vous pour le faire a ma place... quand on t'aide sur un sujet c'est qu'on se tape des pages de docs ou qu'on se les ai tapes par le passé, personne ici n'a la science infuse. :cry:
ImageImage
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: SimplyOpenGL2DDrawing

Message par Shadow »

Salut Case,

Non je demande pas ça, quand même, comment tu peux penser ça de moi :cry:
Je demande juste si des gents savent, voila c'est tous, pour le moment !

Je dis que moi je veux pas me taper de la doc à plus en finir, ya bien des gents qui savent non ?
Faut m'aider un peu quoi, jpeu pas tous faire moi snif :cry: :mrgreen:

Bon plus sérieusement, bhaaa toujours pas envie dme coltiner 50 000 page de doc, en anglais en plus
et même si c'était en français aussi !

Nan mais voila, comme ici, si yen as qui savent, déjà là j'ai pas mal de truc mais ya des truc je sais pas !
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
case
Messages : 1545
Inscription : lun. 10/sept./2007 11:13

Re: SimplyOpenGL2DDrawing

Message par case »

:cry: quand j'ai commence l'informatique internet n'existait pas on avais pas la chance d'avoir des bouquins toujours en français , fallait bien se débrouiller... un dico français/anglais dans la main en lisant des bouquins énormes et parfois mal écrits . aujourd'hui tu peux aller sur un site opengl, faire une recherche, traduire avec google trad... tu peux bien sur demander de l'aide ici aussi mais kernadec a raison tu devrais déjà comprendre opengl avant d’écrire des modules.
tu poste un sujet sur open-gl le 7 mars.
Salutation,

Pour commencer en OpenGL que je connais pas, je voudrais savoir comment
dessiner des forme simple, des lignes, du texte, et aussi des images, etc...

Je voudrais essayer de faire pour commencer de la 2D avec, donc pouvoir dessiner des forme en 2D.
OpenGL c'est comme un genre de canevas mais pour la 3D, mais c'est chaud à utiliser.
et la tu te lance dans un module 'SimplyOpenGL2DDrawing' sur un sujet que tu ne maîtrise pas. ça n'a pas de sens

bon courage en tout cas pour ton projet même si perso je ne pourrais pas t'aider la dedans car je ne connais pas OpenGL par contre j'ai gardé du pop-corn :mrgreen:
ImageImage
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: SimplyOpenGL2DDrawing

Message par Shadow »

Ok, merci du retour !
par contre j'ai gardé du pop-corn
Rhoooo c'est pas cré cré zenti de se moquer hein :mrgreen:
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
grendizer
Messages : 61
Inscription : mer. 29/mai/2019 6:29

Re: SimplyOpenGL2DDrawing

Message par grendizer »

Salut Shadow

Regarde ce cours en français sur l'OpenGL :

https://opengl.developpez.com/tutoriels ... pengl#L3-1
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: SimplyOpenGL2DDrawing

Message par Shadow »

Merci, mais franchement c'est imbuvable surtout que c'est pour du C.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Avatar de l’utilisateur
grendizer
Messages : 61
Inscription : mer. 29/mai/2019 6:29

Re: SimplyOpenGL2DDrawing

Message par grendizer »

salut

as tu été voir sur le forum anglais de Purebasic ?
regarde si ça peux t'aider :

https://www.purebasic.fr/english/viewtopic.php?t=72977
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: SimplyOpenGL2DDrawing

Message par Shadow »

Salut, merci beaucoup pour l'exemple, mais je n'est pas réussi à le faire fonctionner, l'écran reste noir.

Code : Tout sélectionner

#GL_CLAMP_TO_BORDER = $812D


UsePNGImageDecoder()
InitEngine3D()

Procedure.l LoadTextur(texN.s)
  Protected glsp.l
  glEnable_(#GL_TEXTURE_2D)
  ME.l=LoadImage(-1,TexN)  ;load the image the normal way
  If ME=0:Debug(TexN +" not found"):ProcedureReturn -1:EndIf
  w=ImageWidth(ME):h=ImageHeight(ME)
  ttx.l=CreateTexture(-1,w,h)
  glGetIntegerv_(#GL_TEXTURE_BINDING_2D, @glsp)  ; => here is the trick = we just get the internal ID of the last created texture (this
                                                 ; ID is  set by the OpenGl driver itself by using the
                                                 ; glgentextures function 
  FreeTexture(ttx)                               ; we release the created texture because we dont need a different ID (whitch is given by purebasic not OpenGL driver)
  CreateTexture(glsp,w,h)                        ; now that we know whitch ID is internal we create a pb texture with the same ID just to have the same ID
                                                 ; for all the functions (3D native, and new ones)                       
                                                 ; here we tell the GL driver about the  internal format, clipping, filtering , width, height.. of the texture
  glTexParameteri_(#GL_TEXTURE_2D, #GL_TEXTURE_MIN_FILTER, #GL_LINEAR)
  glTexParameteri_(#GL_TEXTURE_2D, #GL_TEXTURE_MAG_FILTER, #GL_LINEAR)
  glTexParameteri_(#GL_TEXTURE_2D, #GL_TEXTURE_WRAP_S, #GL_CLAMP_TO_BORDER)
  glTexParameteri_(#GL_TEXTURE_2D, #GL_TEXTURE_WRAP_T, #GL_CLAMP_TO_BORDER)
  glTexImage2D_(#GL_TEXTURE_2D, 0, 4, w,h, 0, #GL_BGRA_EXT, #GL_UNSIGNED_BYTE, #Null)
  ; here we will store the image into the texture
  StartDrawing(TextureOutput(glsp))
  DrawingMode(#PB_2DDrawing_AlphaBlend)
  DrawAlphaImage(ImageID(ME),0,0)
  StopDrawing()
  ; dont forget to free the image
  FreeImage(ME)
  ProcedureReturn glsp
EndProcedure






Procedure DrawSprite(tex.l,x.f,y.f,col.l=$FFFFFFFF,rot.f=0,sc.f=1)
  If sc=<0:ProcedureReturn :EndIf
  glEnable_(#GL_TEXTURE_2D) :  glBindTexture_(#GL_TEXTURE_2D,tex)
  Protected w.l,h.l
  glGetTexLevelParameteriv_(#GL_TEXTURE_2D,0,#GL_TEXTURE_WIDTH, @w)
  glGetTexLevelParameteriv_(#GL_TEXTURE_2D,0,#GL_TEXTURE_HEIGHT, @h)
  glRotatef_(rot,0,0,1)
  If sc>0:glScalef_(sc,sc,1):x/sc:y/sc:EndIf
  cx1.f=0
  cx2.f=1
  cy1.f=1
  cy2.f=0
  x1.f=x
  x2.f=x+w
  y2.f=y+h 
  y1.f=y
  
  glColor4ub_(Red(col),Green(col),Blue(col),Alpha(col))
  glBegin_(#GL_QUADS)
  glTexCoord2f_(cx1,cy2);
  glVertex2i_(x1,y1)    ;
  glTexCoord2f_(cx1,cy1);
  glVertex2i_(x1,y2)    ;
  glTexCoord2f_(cx2,cy1);
  glVertex2i_(x2,y2)    ;
  glTexCoord2f_(cx2,cy2);
  glVertex2i_(x2,y1)    ;  ;
  glEnd_()
  glPopMatrix_()
  glDisable_(#GL_TEXTURE_2D)
EndProcedure




Procedure Begin2D()
  glDisable_(#GL_DEPTH_TEST)
  glDisable_(#GL_CULL_FACE)
  
  glEnable_(#GL_BLEND)          
  glBlendFunc_(#GL_SRC_ALPHA,#GL_ONE_MINUS_SRC_ALPHA)
  
  glDisable_(#GL_DEPTH_TEST )
  
  glEnable_(#GL_ALPHA_TEST )
  glAlphaFunc_(#GL_GREATER, 0)
  
  glDisable_(#GL_STENCIL_TEST)
  glDisable_(#GL_TEXTURE_1D)
  glDisable_(#GL_LIGHTING)
  glDisable_(#GL_LOGIC_OP)
  glDisable_(#GL_DITHER)
  glDisable_(#GL_FOG)
  
  glHint_(#GL_POINT_SMOOTH_HINT, #GL_FASTEST)
  glHint_(#GL_LINE_SMOOTH_HINT , #GL_FASTEST)
  
  glPointSize_( 1 )
  glLineWidth_( 1 )
  
  Dim ViewPort.i(3)
  
  glGetIntegerv_(#GL_VIEWPORT, @ViewPort(0))
  
  glMatrixMode_(#GL_PROJECTION)   
  glPushMatrix_()
  glLoadIdentity_()
  glOrtho_(0, ViewPort(2),ViewPort(3),0,0, -1)
  glMatrixMode_(#GL_MODELVIEW)
  glPushMatrix_()
  glLoadIdentity_()
EndProcedure

Procedure End2D() 
  glMatrixMode_(#GL_PROJECTION)
  glPopMatrix_()
  glMatrixMode_(#GL_MODELVIEW)
  glPopMatrix_()
EndProcedure






Add3DArchive(GetTemporaryDirectory(),#PB_3DArchive_FileSystem)
Add3DArchive(GetCurrentDirectory(),#PB_3DArchive_FileSystem)
Add3DArchive(#PB_Compiler_Home, #PB_3DArchive_FileSystem)

Parse3DScripts()
InitSprite()
InitMouse()
InitKeyboard()
OpenWindow(0, 0, 0, 800, 600, "New OpenGL",#PB_Window_Tool)
res.l=OpenWindowedScreen(WindowID(0), 0, 0, 800, 600, 0,0,0,#PB_Screen_NoSynchronization)   

Global sh.l=WindowHeight(0)
Global sw.l=WindowWidth(0)
Global Fbo.l  ; this is a framebuffer to use later with textures (dont bother about him)

;We are done. Now we can use our texture for every thing : u just have to load any image
Global Tx1.l=Loadtextur(#PB_Compiler_Home + "Examples\3D\Data\OPE\textures\bigflame.png")

; now the GL setting

glViewport_(0, 0,WindowWidth(0),WindowHeight(0))
; Set current Mode to projection(ie: 3d)
glMatrixMode_(#GL_PROJECTION)
;'Load identity matrix to projection matrix
glLoadIdentity_()
;'Set gluPerspective params
Aspect.f = WindowWidth(0)/WindowHeight(0);
                                         ;'use glu Perspective to set our 3d frustum dimension up
gluPerspective_(45.0, aspect, 1.0, 60.0)
;'Modelview mode ie. Matrix that does things to anything we draw as in lines, points, tris, etc.
glMatrixMode_(#GL_MODELVIEW)
;'load identity(clean) matrix to modelview
glLoadIdentity_()
glShadeModel_(#GL_SMOOTH)        ;         'set shading to smooth(try GL_FLAT)
glClearColor_(0.0, 0.0, 0.0, 1.0);        'set Clear color to BLACK
glClearDepth_(1.0)               ;        'Set Depth buffer to 1(z-Buffer)
glDisable_(#GL_DEPTH_TEST)       ;         'Disable Depth Testing so that our z-buffer works
                                 ;'compare each incoming pixel z value with the z value present in the depth buffer
                                 ;'LEQUAL means than pixel is drawn if the incoming z value is less than
                                 ;'or equal to the stored z value
glDepthFunc_(#GL_LEQUAL)
;'have one or more material parameters track the current color
;'Material is your 3d model
glEnable_(#GL_COLOR_MATERIAL)
; 'Enable Texturing
glEnable_(#GL_TEXTURE_2D)
;'Tell openGL that we want the best possible perspective transform
glHint_(#GL_PERSPECTIVE_CORRECTION_HINT, #GL_NICEST)
;'Disable Backface culling
glDisable_(#GL_CULL_FACE)
glPolygonMode_(#GL_FRONT,#GL_FILL)
;enable blending For transparency
glEnable_(#GL_BLEND)          
glBlendFunc_(#GL_SRC_ALPHA,#GL_ONE_MINUS_SRC_ALPHA)
glDisable_(#GL_DEPTH_TEST )
glEnable_(#GL_ALPHA_TEST )
glAlphaFunc_(#GL_GREATER, 0)
glDisable_(#GL_STENCIL_TEST)
glDisable_(#GL_TEXTURE_1D)
glDisable_(#GL_LOGIC_OP)
glDisable_(#GL_DITHER)
glDisable_(#GL_FOG)
glHint_(#GL_POINT_SMOOTH_HINT, #GL_FASTEST)
glHint_(#GL_LINE_SMOOTH_HINT , #GL_FASTEST)
glPointSize_( 1 )
glLineWidth_( 1 )

cam=CreateCamera(-1, 0, 0, 100, 100)
light=CreateLight(-1,RGB(255, 255, 255),13*32,320,32*12,#PB_Light_Directional)
SetLightColor(light, #PB_Light_SpecularColor, RGB(255,255,255))
LightLookAt(light, 0, 10, 0)
AmbientColor(RGB(150, 150, 150))

MoveCamera(cam,0,180,180);
CameraLookAt(cam,0,0,0)



Repeat
  WindowEvent()
  
  ExamineKeyboard()
  ;  3D Stuff comes HERE 
  
  RenderWorld()   
  ;2D Stuff comes HERE 
  Begin2D()
  DrawSprite(tx1,200,0,RGBA($ff,$ff,$ff,200))
  End2D()
  
  FlipBuffers()
  
Until KeyboardPushed(#PB_Key_Escape)
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Shadow
Messages : 1413
Inscription : mer. 04/nov./2015 17:39

Re: SimplyOpenGL2DDrawing

Message par Shadow »

Mise à jour du module.
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Re: SimplyOpenGL2DDrawing

Message par Ollivier »

case a écrit :quand j'ai commence l'informatique internet n'existait pas on avais pas la chance d'avoir des bouquins toujours en français , fallait bien se débrouiller...
On n'avait pas la chance d'avoir des bouquins (tout court). Français ou pas, je m'en tamponne, moi, j'avais rien, juste le DEBUG.COM pour l'assembleur. C'était un truc de malade. Et je redoute toujours un black out : les gens n'imaginent pas l'enfer que c'était, tout ça pour du business et des décideurs ignorants.

J'aurais eu un bouquin en anglais sur l'ASM, j'aurais été au paradis.
Je me souviens de l'époque de la sortie du Pentium (et son bug), j'étais en mode réel sur un 80286. Et un type m'a prêté un livre sur le 80386, matériel et logiciel, sans aucun programme d'exemple, juste le fonctionnement de chaque instruction (donc nombre de cycles etc...) et l'architecture du processeur, ses voltages, etc... J'ai dévoré ce livre, c'était de la pure théorie pour moi, sans matériel ni logiciel, mais je l'ai bouffé comme un hotdog, j'ai mis de la mayo sur chaque page. J'en pouvais plus...

Il ne faut pas looper cette chance d'apprendre des tutoriels dispo sur le Net, ni même celle de communiquer avec les contributeurs. Ce n'est pas sûr que ça dure éternellement de disposer d'autant d'informations.

J'ai gardé, au cas où quelques zilog. On ne sait jamais...
Répondre