안녕하세요, 저는 최근에 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);
내 영어 죄송하고 모두에게 감사 오류입니다.
어떤 OS (또는 배포판) 당신이 사용하는 볼, 내 우분투 컴퓨터에이 같은 경고없이 코드
그것은 컴파일의 시작 부분에 다음 줄을 누락? – saeleko
우분투 마지막 버전 –