Comment initialiser OpenGL (pas OGRE) sur MacOSX ?
Comment initialiser OpenGL (pas OGRE) sur MacOSX ?
Bonjour,
J'ai une application PB qui fonctionne sous Windows et Linux et qui fait appel à OpenGL en natif.
Savez-vous comment initialiser et utiliser l'API d'OpenGL (et non pas OGRE) sous MacOSX ? (x86)
Merci.
J'ai une application PB qui fonctionne sous Windows et Linux et qui fait appel à OpenGL en natif.
Savez-vous comment initialiser et utiliser l'API d'OpenGL (et non pas OGRE) sous MacOSX ? (x86)
Merci.
Ok, voici donc le minimum pour initialiser et utiliser OpenGL avec Glut sur MacOS
Code : Tout sélectionner
EnableExplicit
ImportC "/System/Library/Frameworks/GLUT.framework/GLUT"
glutInit(*argcp.i, *argv.b)
glutInitDisplayMode(mode.i)
glutInitWindowPosition(x.i, y.i)
glutInitWindowSize(width.i, height.i)
glutMainLoop()
glutCreateWindow(title.s)
glutFullScreen()
glutDisplayFunc(*Proc)
glutIdleFunc(*Proc)
glutSwapBuffers()
EndImport
ImportC "/System/Library/Frameworks/OpenGL.framework/OpenGL"
glClear(mask.l)
glClearColor(red.f, green.f, blue.f, alpha.f)
EndImport
;IncludeFile "gl.pbi"
#GL_COLOR_BUFFER_BIT = $00004000
#GL_DEPTH_BUFFER_BIT = $00000100
;IncludeFile "glut.pbi"
#GLUT_RGB = $0000
#GLUT_DEPTH = $0010
#GLUT_DOUBLE = $0002
ProcedureC draw()
glClearColor(1, 0, 0, 0)
glClear(#GL_COLOR_BUFFER_BIT | #GL_DEPTH_BUFFER_BIT)
glutSwapBuffers()
EndProcedure
Define a = 0
glutInit(@a, 0)
glutInitWindowSize(256, 256);
glutInitWindowPosition(0, 0);
glutInitDisplayMode(#GLUT_RGB | #GLUT_DEPTH | #GLUT_DOUBLE);
glutCreateWindow("Title")
glutDisplayFunc(@draw())
;glutIdleFunc(@draw())
;glutKeyboardFunc(@key())
;glutReshapeFunc(@reshape())
glutMainLoop()
- Progi1984
- Messages : 2659
- Inscription : mar. 14/déc./2004 13:56
- Localisation : France > Rennes
- Contact :
A part Niffo & Oliv, je ne vois pas grand utilisateur 

Librairies & Applications : https://www.purebasic.fr/french/viewtop ... f=8&t=6220
Site Web : https://rootslabs.net
Site Web : https://rootslabs.net
Bonsoir à tous.
Moi j'ai un iMac 2,4 Ghz Intel Core 2 Duo avec 2 Go de Mémoire et carte graphique Ati Radeon HD2600, mais le seul problème c'est que je n'ai jamais réussi a faire tourner PureBasic dessus.
J'ai tout essayé mais à chaque fois j'ai des problèmes.Par exemple, StartDrawing ne fonctionne pas avec ce code tout simple. J'ai marqué le message d'erreur qu'il me retourne sur la ligne de StartDrawing.
Avant la dernière version cette commande scratchait carrément le système mais maintenant j'obtient bien une fenêtre mais vide.
Et si je crée un exécutable avec ce programme ou un autre, lorsque je le lance, j'ai une fenêtre du terminal qui s'ouvre en même temps que la fenêtre du programme. Si je ferme le terminal le programme se ferme aussi.
J'ai regardé le forum Anglais, mais personne ne semble avoir ce genre de problème et comme je ne parle pas un mot d'anglais...
Alors pour l'instant je programme sur Mac avec RealBasic même si ce n'est pas le pied.
Alors si Niffo ou Oliv peuvent me dire comment ils l'ont installé je suis preneur...
Moi, j'ai juste copié le dossier PureBasic dans le dossier application comme il est spécifié dans le Read me.
Merci d'avance.
Moi j'ai un iMac 2,4 Ghz Intel Core 2 Duo avec 2 Go de Mémoire et carte graphique Ati Radeon HD2600, mais le seul problème c'est que je n'ai jamais réussi a faire tourner PureBasic dessus.
J'ai tout essayé mais à chaque fois j'ai des problèmes.Par exemple, StartDrawing ne fonctionne pas avec ce code tout simple. J'ai marqué le message d'erreur qu'il me retourne sur la ligne de StartDrawing.
Code : Tout sélectionner
Width=200
Height=150
If OpenWindow(0, 0, 0, Width, Height, "Circles", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
If StartDrawing(WindowOutput(0)); <-----The spécified output is null (0 value)
x = Width/2
y = Height/2
For Radius = Height/2 To 10 Step -10
Circle(x, y, radius ,RGB(Random(255),Random(255),Random(255)))
Next
StopDrawing() ; This is required when drawing operations are done. Never forget it!
EndIf
Repeat : Event = WaitWindowEvent() : Until Event = #PB_Event_CloseWindow
EndIf

Avant la dernière version cette commande scratchait carrément le système mais maintenant j'obtient bien une fenêtre mais vide.
Et si je crée un exécutable avec ce programme ou un autre, lorsque je le lance, j'ai une fenêtre du terminal qui s'ouvre en même temps que la fenêtre du programme. Si je ferme le terminal le programme se ferme aussi.
J'ai regardé le forum Anglais, mais personne ne semble avoir ce genre de problème et comme je ne parle pas un mot d'anglais...

Alors pour l'instant je programme sur Mac avec RealBasic même si ce n'est pas le pied.
Alors si Niffo ou Oliv peuvent me dire comment ils l'ont installé je suis preneur...

Moi, j'ai juste copié le dossier PureBasic dans le dossier application comme il est spécifié dans le Read me.
Merci d'avance.

Je crois que WindowOutput ne fonctionne en effet pas sur MacOSx86, mais tu devrais essayer de dessiner dans un contrôle image, je crois que ImageOutput fonctionne lui.
[Edit]
Je confirme, ça marche :
[Edit]
Je confirme, ça marche :
Code : Tout sélectionner
Width=200
Height=150
If OpenWindow(0, 0, 0, Width, Height, "Circles", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ImageGadget(0, 0, 0, width, height, 0)
CreateImage(0, width, height)
If StartDrawing(ImageOutput(0)); <-----The spécified output is null (0 value)
x = Width/2
y = Height/2
For Radius = Height/2 To 10 Step -10
Circle(x, y, radius ,RGB(Random(255),Random(255),Random(255)))
Next
StopDrawing() ; This is required when drawing operations are done. Never forget it!
SetGadgetState(0, ImageID(0))
EndIf
Repeat : Event = WaitWindowEvent() : Until Event = #PB_Event_CloseWindow
EndIf
Bonjour Niffo,
Merci pour ta réponse, mais malheureusement ça ne marche pas chez moi, cette fois-ci j'ai :
d'ailleurs à ce sujet dans de nombreux programmes j'ai des "syntax error" sur beaucoup de lignes...
Mais tu ne m'as pas dit comment tu avais installé PureBasic et si quand tu compiles un programme si ça marche sans problèmes ?
Merci d'avance pour tes réponses.
A+
Merci pour ta réponse, mais malheureusement ça ne marche pas chez moi, cette fois-ci j'ai :
Code : Tout sélectionner
ImageGadget(0, 0, 0, width, height, 0) ;<--- Ligne 4: syntax error

Mais tu ne m'as pas dit comment tu avais installé PureBasic et si quand tu compiles un programme si ça marche sans problèmes ?
Merci d'avance pour tes réponses.
A+
Supprime les espaces ou les tabulations en début de ligneGood07 a écrit :Bonjour Niffo,
Merci pour ta réponse, mais malheureusement ça ne marche pas chez moi, cette fois-ci j'ai :Code : Tout sélectionner
ImageGadget(0, 0, 0, width, height, 0) ;<--- Ligne 4: syntax error
Comme toiMais tu ne m'as pas dit comment tu avais installé PureBasic ...
Oui, sauf si j'utilise les fonctions qui posent pb avec MacOS, comme par exemple WindowOutputet si quand tu compiles un programme si ça marche sans problèmes ?

Cela dit, je viens de compiler un programme de 8000 lignes (utilisant OpenGL, pour en revenir au sujet

Niffo à écrit:
Et en plus ça marche !
Alors ça c'est un peu fort.
J'aurai jamais pensé à un détail comme celui-ci...
Bon, merci beaucoup pour cette avancée mais par contre pour la compilation c'est toujours pas le pied. J'ai toujours cette fenêtre du terminal qui s'ouvre et qui m'empêche d'utiliser le programme car c'est elle qui à toujours le focus.
FormidableSupprime les espaces ou les tabulations en début de ligne




Alors ça c'est un peu fort.

J'aurai jamais pensé à un détail comme celui-ci...
Bon, merci beaucoup pour cette avancée mais par contre pour la compilation c'est toujours pas le pied. J'ai toujours cette fenêtre du terminal qui s'ouvre et qui m'empêche d'utiliser le programme car c'est elle qui à toujours le focus.

Lorsque tu genères un EXE (je suppose que c'est dans ce cas que tu as le "problème" dont tu parles), il faut ajouter ".app" au nom de ton executable si tu veux qu'il se comporte comme une application mac.Bon, merci beaucoup pour cette avancée mais par contre pour la compilation c'est toujours pas le pied. J'ai toujours cette fenêtre du terminal qui s'ouvre et qui m'empêche d'utiliser le programme car c'est elle qui à toujours le focus.
Merci Beaucoup Niffo
Comme je le dis souvent "Il vaut mieux un qui sait que trois qui cherchent !"
Tu as raison sur toute la ligne. Le fait d'ajouter l'extension ".app" fait que le programme fonctionne normalement. A ce sujet je me demande pourquoi le compilateur ne le rajoute pas automatiquement. Il rajoute bien ".exe" aux exécutables de Windows.
Enfin là tu me sauves la mise et désolé d'avoir pollué ton topic avec mes problèmes.
Par contre pour en revenir a ton topic, j'ai essayé de tester ton programme avec mon PureBasic tout neuf qui fonctionne
et j'ai ce message:
ligne 22: Constant not found: #GL_COLOR_BUFFER_BIT
Si je commente la ligne 22, j'ai le même message ligne 23 et ainsi de suite. En fait avec toutes les constantes...

Comme je le dis souvent "Il vaut mieux un qui sait que trois qui cherchent !"
Tu as raison sur toute la ligne. Le fait d'ajouter l'extension ".app" fait que le programme fonctionne normalement. A ce sujet je me demande pourquoi le compilateur ne le rajoute pas automatiquement. Il rajoute bien ".exe" aux exécutables de Windows.
Enfin là tu me sauves la mise et désolé d'avoir pollué ton topic avec mes problèmes.

Par contre pour en revenir a ton topic, j'ai essayé de tester ton programme avec mon PureBasic tout neuf qui fonctionne

ligne 22: Constant not found: #GL_COLOR_BUFFER_BIT
Si je commente la ligne 22, j'ai le même message ligne 23 et ainsi de suite. En fait avec toutes les constantes...
Parce que ce n'est pas forcément ce que tu veux faire lorsque tu compiles. Le fait d'ajouter .app n'ajoute pas une extension à l'executableA ce sujet je me demande pourquoi le compilateur ne le rajoute pas automatiquement.

Sans doute encore un pb de copié/collé. Retire encore les espaces pour voir. Je n'ai pas cherché pourquoi, mais l'IDE version mac a l'air allergique aux copiés/collés à partir du site.Par contre pour en revenir a ton topic, j'ai essayé de tester ton programme avec mon PureBasic tout neuf qui fonctionneet j'ai ce message:
ligne 22: Constant not found: #GL_COLOR_BUFFER_BIT
Sinon, tu risques de ne pas être très impressionné par mon exemple, ça ouvre juste une fenêtre rouge


Bonjour à tous,
Oliv a écrit:
Et bien en fait :
écrit comme cela l'éditeur râle et me sort "constante not found"
Par contre si j'écrit :
Ca marche Nickel Chrome...
Bizarre... Vous avez dit bizarre ?
Enfin, l'essentiel c'est de le savoir mais c'est pénible pour le copier coller, il faut reprendre tous les listings pour que ça fonctionne. De plus au bout de trois ou quatre copier coller a partir du site de PureBasic, ça me plante carrément l'éditeur. Les commandes par les icônes ne fonctionnent plus et il faut se servir des commandes des menus pour que cela fonctionne.
Je pense que Fred aura quelques retouche à faire avec l'éditeur. Il à corrigé quelques bugs mais apparemment il y en a d'autres.
Oliv a écrit:
En fait, il y a un souci tout court avec l'éditeur car je disais plus haut à Niffo que j'avais des soucis avec les constantes de son programme.Il doit y avoir un soucis en rapport avec les caractères fin de lignes des navigateurs web. Car si on fait un copier/coller venant d'une machine virtuelle Windows ça fonctionne...
Et bien en fait :
Code : Tout sélectionner
#GL_COLOR_BUFFER_BIT = $00004000
#GL_DEPTH_BUFFER_BIT = $00000100
Par contre si j'écrit :
Code : Tout sélectionner
#GL_COLOR_BUFFER_BIT= $00004000
#GL_DEPTH_BUFFER_BIT= $00000100

Bizarre... Vous avez dit bizarre ?
Enfin, l'essentiel c'est de le savoir mais c'est pénible pour le copier coller, il faut reprendre tous les listings pour que ça fonctionne. De plus au bout de trois ou quatre copier coller a partir du site de PureBasic, ça me plante carrément l'éditeur. Les commandes par les icônes ne fonctionnent plus et il faut se servir des commandes des menus pour que cela fonctionne.

Je pense que Fred aura quelques retouche à faire avec l'éditeur. Il à corrigé quelques bugs mais apparemment il y en a d'autres.