2016-11-21 4 views
0

안녕하세요, 저는 최근에 OpenGL의 기초를 배우고 있습니다. 그래서 처음 프로그램을 작성하려고 노력했습니다. 처음에는 드로잉 호출 용 버퍼를 만들 수있는 함수를 사용하여 시도했습니다. 하지만 링커는이 함수가 선언되지 않았다고 말합니다. 그래서 나는 오래된 것 (나는 아마 틀렸다고 생각한다)을 가지고 시험해 보았다. 그래서 내 코드는 glGenBuffers 모든 GL * 기능을 가지고 태어난 다음OpenGl error linking

#include <GL/glut.h> 
    #include <GL/glext.h> 

    #include <GL/gl.h> 
    #include <stdlib.h> 
    #include <stdio.h> 


    void reshape(int, int); 
    void display(void); 
    void keyboard(unsigned char, int, int); 


    int main(int argc, char** argv) 
    { 
     glutInit(&argc, argv); 
     glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); 
     glutInitWindowSize(500,500); 
     glutInitWindowPosition (100, 100); 
     glutCreateWindow(argv[0]); 
     glClearColor(0.0,0.0,0.0,0.0); 
     glShadeModel(GL_FLAT); 
     glutDisplayFunc(display); 
     glutReshapeFunc(reshape); 
     glutKeyboardFunc(keyboard); 
     glutMainLoop(); 
     return 0; 
    } 

    void reshape(int w, int h) 
    { 
    glViewport(0,0,(GLsizei) w, (GLsizei) h); 

    } 

    void display(void) 
    { 
     glMatrixMode(GL_PROJECTION); 
     glLoadIdentity(); 
     GLuint* i; 
     glGenBuffers(1,i); 

     glClear(GL_COLOR_BUFFER_BIT); 

     glBegin(GL_TRIANGLES); 
       glColor3f(1.0f,1.00f,1.0f);   
       glVertex3f(0.5f, 0.0f, 0.0f);  
       glVertex3f(-0.5f,0.5f, 0.0f);  
       glVertex3f(0.0f,-0.5f, 0.0f);  
      glEnd(); 
     glBegin(GL_TRIANGLES); 
       glColor3f(1.0f,1.00f,1.0f);   
       glVertex3f(-0.5f, 0.0f, 0.0f);  
       glVertex3f(0.5f,0.5f, 0.0f);   
       glVertex3f(0.0f,-0.5f, 0.0f);  
      glEnd(); 
      //glutWireCube(10); 
      glFlush(); 

    } 

    void keyboard(unsigned char key, int x, int y) 
    { 
    switch(key) { 
    case 'l': 

    break; 
    } 
    } 

문제입니다. 여기 GCC의 commande이

gcc -o cube main.c -lGL -lGLU -lglut 

사용이 이는

main.c: In function ‘display’: 
main.c:40:3: warning: implicit declaration of function ‘glGenBuffers’ [-Wimplicit-function-declaration] 
    glGenBuffers(1,i); 

내 영어 죄송하고 모두에게 감사 오류입니다.

+0

어떤 OS (또는 배포판) 당신이 사용하는 볼, 내 우분투 컴퓨터에이 같은 경고없이 코드

#define GL_GLEXT_PROTOTYPES #include <GL/glut.h> #include <GL/glext.h> #include <GL/gl.h> #include <stdlib.h> #include <stdio.h> 

그것은 컴파일의 시작 부분에 다음 줄을 누락? – saeleko

+0

우분투 마지막 버전 –

답변

0
+0

덕분에 많이 작동합니다. –

+0

귀하의 질문에 최고로 평가할 것입니다. –

+0

오신 것을 환영합니다. 기꺼이 도와 드리겠습니다. – saeleko