8
votes

Fenêtre Cocoa OpenGL à Pure C?

Je veux ouvrir une fenêtre OpenGL (pour afficher et attraper les événements de frappe / souris) dans MacOSX.

Je ne veux pas utiliser de glutte (puisqu'il demande, c'est le fil racine).

Je ne veux pas apprendre l'objectif c.

est là quand même pour accéder à l'API OpenGL à Pure C?

Merci!


1 commentaires

Pourquoi cela a-t-il été évolué? Il y a des réponses valides. Le seul problème que je vois ici est qu'il ne veut pas le faire du premier fil. IMHO, c'est une contrainte raisonnable pour une bibliothèque qui vise à rendre une demande portable.


7 Réponses :


3
votes

SDL? http://www.libsdl.org/
Simple DirectMedia Layer est une bibliothèque multimédia croisée conçue pour fournir un accès de bas niveau à l'audio, au clavier, à la souris, à un joystick, au matériel 3D via OpenGL et Framebuffer vidéo 2D. Il est utilisé par les logiciels de lecture MPEG, les émulateurs et de nombreux jeux populaires, y compris le port Linux primé de "civilisation: appel au pouvoir".

SDL prend en charge Linux, Windows, Windows CE, Beos, MacOS, Mac OS X, FreeBSD, NetBSD, OpenBSD, BSD / OS, Solaris, IRIX et QNX. Le code contient un support pour Amigaos, Dreamcast, Atari, Aix, OSF / TRU64, RISC OS, Symbianos et OS / 2, mais ceux-ci ne sont pas officiellement pris en charge.


0 commentaires

4
votes

Si vous souhaitez saisir des événements sur OS X, il y a quelques options:

  • SDL. Fortement recommandé, c, pas très flexible. Vous aurez besoin de l'installer sur des systèmes où vous l'utilisez ou incluez le cadre dans votre ensemble d'applications.
  • cacao. Utilisez ceci si vous avez besoin de plus de flexibilité.
  • carbone. Je ne recommande pas d'utiliser cette API, mais c'est pur c.

    L'objectif c est un très petit ensemble d'ajouts au code C pur. Vous n'êtes pas obligé d'en apprendre une grande partie pour avoir en utilisant l'API de cacao. Ce n'est pas du tout la bête qui est c ++. Si vous connaissez C, vous pouvez apprendre tout ce dont vous avez besoin depuis quelques heures. Tous les meilleurs échantillons de code et de documentation sur le Web sont destinés au cacao, pas de carbone. Il y a des échantillons d'échantillons OpenGL à gogo qui utilise Cacoa, surtout sur le site Web de Dev sur le Web et sur Apple.

    Cependant, toute la manipulation des événements doit aller dans le fil principal, quelle que soit l'API que vous utilisez. C'est le but du fil principal, non? Vous pouvez faire des appels opengl dans n'importe quel fil que vous aimez, bien sûr.


0 commentaires

1
votes

La seule API pure C natif sur Mac OS X est carbone. La majorité d'entre eux est cependant obsolète et vous ne pouvez pas écrire des applications 64 bits à l'aide de l'API de carbone.

L'autre API est cacao - qui est basée sur l'objectif. Le cadre de cacao lui-même limite les applications à avoir un seul thread principal avec l'événement de messagerie d'expédition sur ce fil.

Gloupe est implémentée sur le cacao, de sorte que, sur le Mac, hérite de cette restriction - de même que tout autre cadre que vous pourriez choisir de envelopper sur celui-ci: qt, sdl, glutte, etc.

Même si la restriction de fil principale est toujours nécessaire de choisir un cadre qui vous fera économiser les tracas de l'objectif d'apprentissage-c.

GLUT - Si tout ce que vous faites, c'est créer une fenêtre, et le traitement d'entrée est un choix simple. SDL et QT fournissent également un traitement de message basé sur C ++ sur MacOSX ainsi qu'un accès continu d'accès direct à OpenGL API pour le rendu.


0 commentaires

-4
votes

Je ne veux pas apprendre l'objectif c.

Puis oubliez le code d'écriture pour exécuter OS X.


1 commentaires

Il est intéressant de noter que l'objectif c est (ou était) mis en œuvre en tant que Compilateur C pré-compilateur et une bibliothèque de fonctions C. Cela signifie qu'il est tout à fait possible de créer, d'appeler et de mettre en œuvre des objets d'objectif C dans Pure C ++, ou C, sans écrire une ligne d'objectif c.



2
votes

Même si vous n'aimez pas goûter. Comment cela sonne-t-il?

Vous pourriez avoir un coup d'œil à attraper les sources de glutation de ici et modifier sa boucle principale. Vous pouvez le trouver dans le glutaapplication.m fichier. Voici comment ça a l'air. Pensez que vous devriez facilement extraire les appels de glutation nécessaires pour les placer dans votre propre boucle principale. xxx


0 commentaires

4
votes

J'ai fini par utiliser GLFW.

Au début, les événements du clavier ne fonctionnent pas; Mais ils ont un exemple de script pour la construction d'un paquet. Après cela, sans faille.


0 commentaires

2
votes

Voici un repo faire exactement ce que vous avez demandé.

https://github.com/ JIMON / OSX_APP_IN_PLAIN_C

Pour trop simplifier, ce qui se passe ici, vous pouvez penser à Objective-C comme une série de macros de préprocesseur qui se traduisent en C. Voir la réponse Here .

Recherche de la base C Les versions de Simple Objective-C Syntaxe est la méthode en jeu. Où ... xxx

devient ... xxx

googling la documentation Apple pour des fonctions telles que objc_msgsend () est le chemin d'apprentissage pour en savoir plus. C'est un trou de lapin très profond.


0 commentaires