Grafica in C++

Programmazione, algoritmica, teoria dell'informazione, ...
Rispondi
Avatar utente
Tess
Messaggi: 272
Iscritto il: 15 set 2009, 14:20
Località: Maserada s. P.

Grafica in C++

Messaggio da Tess »

Salve a tutti, ho iniziato da qualche tempo a programmare in C++ e mi piacerebbe iniziare a utilizzare un po' do grafica.

Ho già guardato un po' in giro se riuscivo a trovare qualche strumento per poter iniziare, ma ho trovato un sacco di problemi.

Queste sono le cose che ho capito:
-nessun compilatore C\C++ non ha librerie proprie di grafica,
-esistono diverse librerie che permettono di supplire a tale mancanza,
-è possibile costruire finestre grafiche con l'utilizzo dell'header windows.h e le opportune librerie,
-è possibile anche costruire un programma grafico più "rudimentale", un po' come la grafica del Pascal,
-a tale fine è molto utile la libreria allegro.

Allora l'ho scaricata, insieme al suo pacchetto, ma non rieco ad includerla effettivamente nel programma.
Volevo chiedervi come sia possibile risolvere questo problema o comunque come sia possibile implementare un minimo di grafica nei programmi senza utilizzare le finestre.
Utilizzo il Dev C++. Ho copiato l'header allegro.h nella cartella include insieme al suo pacchetto. Risultati: l'errore non sta tanto nel non riuscire a trovarla, ma nel non riuscire a utilizzare le sue componenti.

Grazie in anticipo.

P.S. dire libreria è equivalente a dire header?
Tibor Gallai
Messaggi: 1776
Iscritto il: 17 nov 2007, 19:12

Messaggio da Tibor Gallai »

Dipende enormemente da cosa intendi per "grafica". Interfacce tipo bottoncini e finestrelline, oppure la possibilità di accendere pixel arbitrari e disegnare figure geometriche, bitmap etc, oppure disegnare roba in 3D, preferibilmente usando al meglio la scheda video?

Esistono caterve di librerie per fare tutte queste cose, o possono essere fatte a mano (se sono abbastanza semplici), basta capire cosa ti serve.

Allegro la usavo una dozzina d'anni fa, ed era piuttosto decente, all'epoca, se non ti andava di usare roba troppo mainstream. E' comunque espressamente pensata per programmare giochi.
Oggi preferisco SDL, che è strutturata in modo un po' più sensato, è un po' più general-purpose, non ha problemi ad essere integrata con QT e OpenGL, è semplicissima e leggerissima, anche piuttosto ben documentata.

http://www.libsdl.org/

Comunque il thread va in Cultura matematica e scientifica, perché non è un problema d'Informatica.

P.S. Dire libreria non è equivalente a dire header.
[quote="Pigkappa"]Penso che faresti un favore al mondo se aprissi un bel topic di bestemmie da qualche parte in modo che ti bannino subito.[/quote]
Avatar utente
Tess
Messaggi: 272
Iscritto il: 15 set 2009, 14:20
Località: Maserada s. P.

Messaggio da Tess »

Grazie del link!
Ho scaricato tutto il pacchetto della SDL, ma non sono ancora riuscito a risolvere il problema!
Il compilatore riesce a trovare l'header, ma mi da un linker error:

Codice: Seleziona tutto

undefined reference to 'WinMain@16'
E lo stesso errore per tutte le altre header parziali che ho trovato.
Qualcuno potrebbe suggerirmi cosa fare?

Comunque mi bastava poter creare piccoli programmi grafici, poter disegnare una linea o un cerchio. Tanto per iniziare a muovere i primi passi nel linguaccio C++.
Tibor Gallai
Messaggi: 1776
Iscritto il: 17 nov 2007, 19:12

Messaggio da Tibor Gallai »

A me Dev C++ non piace assolutamente, penso che la scelta più coerente con SDL sia CodeBlocks, che sia appoggia a MinGW e usa quindi il compilatore gcc.
Questo significa che il tuo codice sarà portabile, ed in particolare non dovrai includere esplicitamente il merdoso windows.h, e tutte le varie balle saranno gestite da SDL+gcc.
Esistono delle guide su come far funzionare SDL e CodeBlocks, non dovresti avere problemi di sorta.

CodeBlocks è qui: http://www.codeblocks.org/
Per far funzionare il tutto, segui questa guida: http://www.dreamincode.net/forums/index ... opic=57275
Una libreria per disegnare qualche primitiva geometrica, da attaccare a SDL: http://www.ferzkopp.net/joomla/content/view/19/14/
[quote="Pigkappa"]Penso che faresti un favore al mondo se aprissi un bel topic di bestemmie da qualche parte in modo che ti bannino subito.[/quote]
Tibor Gallai
Messaggi: 1776
Iscritto il: 17 nov 2007, 19:12

Messaggio da Tibor Gallai »

Tess ha scritto:Il compilatore riesce a trovare l'header, ma mi da un linker error:

Codice: Seleziona tutto

undefined reference to 'WinMain@16'
E lo stesso errore per tutte le altre header parziali che ho trovato.
Qualcuno potrebbe suggerirmi cosa fare?
Mi è venuta in mente una cosa, e spero che non sia troppo tardi per dirtela...
Ti dà quell'errore perché hai linkato la versione sbagliata della libreria di SDL. La distribuzione standard dei binari di SDL comprende una versione per VC++ e una versione per MinGW. Tu probabilmente hai scaricato la prima, mentre a quanto pare Dev C++ si aspetta la seconda. In particolare, il linker si sta lamentando perché trova le librerie .lib, ma gli piacerebbero le librerie .a, che sono nell'altra distribuzione.
[quote="Pigkappa"]Penso che faresti un favore al mondo se aprissi un bel topic di bestemmie da qualche parte in modo che ti bannino subito.[/quote]
Rispondi