2009-05-13 19 views
42

में ओपनजीएल सीखना मैं OpenGL सीखने की कोशिश कर रहा हूं और Nehe guides के माध्यम से जाकर अपने सी ++ कौशल में सुधार कर रहा हूं, लेकिन सभी उदाहरण विंडोज के लिए हैं और मैं वर्तमान में लिनक्स पर हूं। मुझे वास्तव में कोई जानकारी नहीं है कि लिनक्स के तहत काम करने के लिए चीजें कैसे प्राप्त करें, और लिनक्स के लिए पोर्ट की गई साइट पर कोड में उसमें अधिक कोड है जो समझाया नहीं गया है (अभी तक, केवल एक ही जिसे मैंने प्राप्त किया है काम SDL उदाहरण है: http://nehe.gamedev.net/data/lessons/linuxsdl/lesson01.tar.gz)। क्या वहां कोई अन्य संसाधन है जो लिनक्स के तहत ओपनजीएल की ओर थोड़ा और विशिष्ट है?उबंटू

+0

मैं स्टैक ओवरफ्लो पर विषय-समापन स्वीकार करता हूं, थोड़ा नाज़ी बन रहा है, लेकिन मुझे यकीन है कि बहुत से लोगों को यह समस्या है; यह [GameDev StackExchange] पर बेहतर अनुकूल होगा (http://gamedev.stackexchange.com/) – cossacksman

उत्तर

65

ओपनजीएल पुस्तकालयों को स्थापित करने वाली पहली चीज़ है। मेरा सुझाव है:

 
freeglut3 
freeglut3-dev 
libglew1.5 
libglew1.5-dev 
libglu1-mesa 
libglu1-mesa-dev 
libgl1-mesa-glx 
libgl1-mesa-dev 

एक बार जब आप उन्हें स्थापित किया है, उनमें के लिए लिंक आप संकलन जब:

g++ -lglut -lGL -lGLU -lGLEW example.cpp -o example 

example.cpp में, ओपन पुस्तकालयों इसलिए की तरह शामिल हैं:

#include <GL/glew.h> 
#include <GL/glut.h> 
#include <GL/gl.h> 
#include <GL/glu.h> 
#include <GL/glext.h> 

फिर , शेडर्स जैसे अधिक उन्नत ओपनएल विकल्पों को सक्षम करने के लिए, इसे अपने ग्लूट के बाद रखें, क्रिएटविंडो कॉल:

GLenum err = glewInit(); 
if (GLEW_OK != err) 
{ 
    fprintf(stderr, "Error %s\n", glewGetErrorString(err)); 
    exit(1); 
} 
fprintf(stdout, "Status: Using GLEW %s\n", glewGetString(GLEW_VERSION)); 

if (GLEW_ARB_vertex_program) 
    fprintf(stdout, "Status: ARB vertex programs available.\n"); 

if (glewGetExtension("GL_ARB_fragment_program")) 
    fprintf(stdout, "Status: ARB fragment programs available.\n"); 

if (glewIsSupported("GL_VERSION_1_4 GL_ARB_point_sprite")) 
    fprintf(stdout, "Status: ARB point sprites available.\n");

जो सभी ओपनजीएल कार्यक्षमता को सक्षम करना चाहिए, और यदि ऐसा नहीं होता है, तो यह आपको समस्याओं को बताना चाहिए।

+0

ओपनजीएल 4.5 कार्यक्षमता प्राप्त करने का कोई तरीका है? या कम से कम 4.1? –

+0

'fprintf (stdout, "% s \ n", glGetString (GL_VERSION)); 'आउटपुट' 3.0 मेसा 17.3.0-डेवेल' हालांकि मेरे पास 4 है।5 'ओपनजीएल कोर प्रोफाइल संस्करण स्ट्रिंग: 4.5 (कोर प्रोफाइल) मेसा 17.3.0-डेवेल' –

1

शायद आप विंडोज़ और विगेट्स को आकर्षित करने के लिए क्यूटी का उपयोग करना चाहेंगे।

Here नेहे गाइड के आधार पर एक ट्यूटोरियल है जो आपको क्यूटी के साथ ओपनजीएल छवियों को बनाने का तरीका दिखाता है।

ओपनजीएल सीखने के लिए, OpenGL Red Book एक पढ़ा जाना चाहिए। एक ऑनलाइन संस्करण है। इसमें बहुत अच्छी व्याख्याएं और उदाहरण हैं।

8

मुझे लगता है कि यह संकलन प्रक्रिया है जो प्रारंभ में सबसे बड़ा अंतर है। उबंटू पर सरल ओपनजीएल ऐप्स संकलित करने के लिए यहां एक उपयोगी मेकफ़ाइल है।

INCLUDE = -I/usr/X11R6/include/ 
LIBDIR = -L/usr/X11R6/lib 

FLAGS = -Wall 
CC = g++         # change to gcc if using C 
CFLAGS = $(FLAGS) $(INCLUDE) 
LIBS = -lglut -lGL -lGLU -lGLEW -lm 

All: your_app        # change your_app. 

your_app: your_app.o 
    $(CC) $(CFLAGS) -o [email protected] $(LIBDIR) $< $(LIBS) # The initial white space is a tab 

सहेजें यह भी एक फ़ाइल Makefile कहा जाता है, और एक ही निर्देशिका में होना चाहिए। लिखकर संकलित करें टर्मिनल से बनाएं या: Vim से बनाएं।

गुड लक

3

makefile के लिए एक छोटे से अद्यतन क्योंकि मैं @Millthorn से इस वर्ष जवाब मिल गया है और यह काम किया नहीं किया: आप न शामिल पथ definde करने की जरूरत है, क्योंकि यह मानक lib में है https://stackoverflow.com/a/2459788/1059828

खुला जीएल संकलित करने के लिए एक न्यूनतम makefile ऐसा दिखाई दे सकता:

LDFLAGS=-lglut -lGL -lGLU -lGLEW -lm 
all: your_app 

http://surflab.cise.ufl.edu/wiki/Getting_Started_with_OpenGL_in_Ubuntu