2012-06-30 37 views
5

Ben yürütülebilir yapmaya çalışıyorum bu hatayı alıyorum, kod hata mesajını almak doğru ve henüz derler Linux Mint 13 çalıştıran ve bunu, ben bu yüzden tanesini birlikte kesmek onlar hakkında çok fazla bilmiyorum benim makefile bir ilgisi olduğunu düşünüyorum ve bazı kod çevrimiçi bulundu:tanımsız başvuru Ben makyaj komutunu vurduğunda OpenGL

GL_INCLUDE = /usr/X11R6/include 
GL_LIB = /usr/X11R6/lib 
GL_GLEW = /user/include 

helloworld: helloworld.o 
    gcc -o hello-gl $^ -L$(GL_LIB) -lGL -lglut -lGLEW -lm 

.c.o: 
    gcc -c -o [email protected] $< -I$(GL_INCLUDE) 

clean: 
    rm -f hello-gl hello-gl-dummy hello-gl.o util.o hello-gl-dummy.o 

benim kod:

#include <stdlib.h> 
#include <stdio.h> 
#include <string.h> 
#include <GL/glew.h> 
#include <GL/freeglut.h> 
#define WINDOW_TITLE_PREFIX "Hello, World!" 

int CurrentWidth = 600, 
    CurrentHeight = 400, 
    WindowHandle = 0; 

void Initialize(int, char*[]); 
void InitWindow(int, char*[]); 
void ResizeFunction(int, int); 
void RenderFunction(void); 

int main(int argc, char* argv[]) 
{ 
    Initialize(argc, argv); 

    glutMainLoop(); 

    exit(EXIT_SUCCESS); 
     return 0; 
} 

void Initialize(int argc, char* argv[]) 
{ 
    GLenum GlewInitResult; 
    InitWindow(argc, argv); 
     GlewInitResult = GlewInit(); 
     if (GLEW_OK != GlewInitResult) { 
      fprintf(stderr, "ERROR: %s\n", glewGetErrorString(GlewInitResult)); 
      exit(EXIT_FAILURE); 
     } 

    fprintf(
     stdout, 
     "INFO: OpenGL Version: %s\n", 
     glGetString(GL_VERSION) 
    ); 

    glClearColor(0.2f, 1.0f, 0.8f, 0.3f); 
} 

void InitWindow(int argc, char* argv[]) 
{ 
    glutInit(&argc, argv); 

    glutInitContextVersion(4, 0); 
    glutInitContextFlags(GLUT_FORWARD_COMPATIBLE); 
    glutInitContextProfile(GLUT_CORE_PROFILE); 

    glutSetOption(
     GLUT_ACTION_ON_WINDOW_CLOSE, 
     GLUT_ACTION_GLUTMAINLOOP_RETURNS 
    ); 

    glutInitWindowSize(CurrentWidth, CurrentHeight); 

    glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA); 

     char *states[] = {"Hello", "My", "Name", "Is", "Lewis"}; 

    WindowHandle = glutCreateWindow(WINDOW_TITLE_PREFIX); 

    if(WindowHandle < 1) { 
     fprintf(
      stderr, 
      "KERN_ERROR: Could not create a new rendering window.\n" 
     ); 
     exit(EXIT_FAILURE); 
    } 

    glutReshapeFunc(ResizeFunction); 
    glutDisplayFunc(RenderFunction); 
} 

void ResizeFunction(int Width, int Height) 

    { 
     /*captures the resize data from the OS and assigns it to the global 
     variable CURRENT_WIDTH & CURRENT_HEIGHT */ 

    CurrentWidth = Width; 
    CurrentHeight = Height; 
    glViewport(0, 0, CurrentWidth, CurrentHeight); 
} 

void RenderFunction(void) 
{ 
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
    /*the next line takes the data from the back-buffer to the screen */ 

    glutSwapBuffers(); 
    glutPostRedisplay(); 
} 
+2

+1 bu hat için: gcc -o merhaba-gl helloworld.o -L/usr/X11R6/lib-lGL -lglut -lGLEW -lm Bu bana yardımcı oldu :) – rendon

+0

@DDC Makefile size yardımcı oldu sevindim :) – TheBlueCat

cevap

4

GLEW işlevlerinin adları 'Glew' değil, 'glew' den başlamalıdır.

Yani öyle

GlewInitResult = glewInit(); 

C harf duyarlıdır ve tüm OpenGL ilgili kütüphaneleri genellikle küçük harfler ile fonksiyonların isimleri başlar.

+0

Teşekkür ederiz! Bir yazım hatası yapmış olmalıyım. – TheBlueCat

İlgili konular