2009-05-13 32 views
42

OpenGL'u öğrenmeye çalışıyorum ve Nehe guides'u geçerek C++ becerilerimi geliştiriyorum, ancak tüm örnekler Windows içindir ve şu anda Linux'tayım. Linux altında işlerin nasıl yapılacağına dair hiçbir fikrim yok ve Linux için taşınmış olan sitedeki kodda açıklanmayan bir kod daha var. iş SDL örneğidir: http://nehe.gamedev.net/data/lessons/linuxsdl/lesson01.tar.gz). Linux altında OpenGL'ye karşı biraz daha spesifik olan başka bir kaynak var mı?Ubuntu'da OpenGL Öğrenme

+0

Yığın Taşması konusundaki konu kapanışlarının biraz Nazi olduğunu kabul ediyorum ama eminim ki birçok insan bu soruna sahip; [GameDev StackExchange] (http://gamedev.stackexchange.com/) – cossacksman

cevap

65

Yapılacak ilk şey OpenGL kitaplıklarını yüklemektir. Ben tavsiye:

bunları kurduktan sonra
 
freeglut3 
freeglut3-dev 
libglew1.5 
libglew1.5-dev 
libglu1-mesa 
libglu1-mesa-dev 
libgl1-mesa-glx 
libgl1-mesa-dev 

, onlara link size derleme yaparken: example.cpp olarak

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

OpenGL kütüphaneleri şöyle şunlardır: Sonra

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

, shader gibi daha gelişmiş opengl seçenekleri etkinleştirmek için glutCreateWindow Çağrı sonra bu yerleştirmek için:

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");

Bu, tüm OpenGL işlevlerini etkinleştirmeli ve eğer yoksa, size sorunları anlatmalıdır.

+0

adresinde opengl 4.5 işlevselliğini elde etmenin bir yolu daha uygun olurdu? ya da en az 4.1? –

+0

'fprintf (stdout,"% s \ n ", glGetString (GL_VERSION));' çıktılar 3.0 Mesa 17.3.0-devel' 4 olmasına rağmen.5 'OpenGL çekirdek profil sürümü dizesi: 4.5 (Çekirdek Profil) Mesa 17.3.0-devel' –

1

Belki de windows ve widget'ları çizmek için Qt'yi kullanmak istersiniz.

Here 'ın Nehe dayalı bir öğretici nasıl Qt OpenGL görüntüler oluşturmak için size göstermek için kılavuzluk eder. OpenGL öğrenmek

, OpenGL Red Book mutlaka okumalısınız. Çevrimiçi bir versiyonu var. Çok iyi açıklamaları ve örnekleri var.

8

Ben başlangıçta en büyük fark derleme süreç olduğunu tahmin edersiniz. Ubuntu'da basit OpenGL uygulamalarını derlemek için yararlı bir Makefile.

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 

kaydet bu da bir dosya Makefile denir ve aynı dizinde olmalıdır. yazarak derleyin veya Vim'den yapın.

İyi şanslar