OpenGL в Eclipse в Windows, справка по настройке с ошибкой компоновки? - PullRequest
1 голос
/ 07 августа 2011

Использование Eclipse 3.6.2, текущей версии CDT, текущих инструментов Cygwin и компилятора C ++ (GCC). Связывание -lglu32, -lglut32, -lopengl32.

Я пытаюсь настроить эту среду для разработки OpenGL и сталкиваюсь с ошибками, которые мне не удалось устранить. Текущие версии соответствующих библиотек и заголовков opengl и glut были скопированы в C: \ cygwin \ lib и C: \ cygwin \ usr \ include \ w32api

Например, при компиляции и ссылках ..

#include <windows.h>

#include <GLES2/gl2.h>

#include <EGL/egl.h>

#include <GL/glut.h>

[...]

void display() {

    glClear( GL_COLOR_BUFFER_BIT ); /* Clear the screen with the clear color */

glBegin(GL_TRIANGLES);
    glVertex3f(-0.5,-0.5,0.0);
    glVertex3f(0.5,0.0,0.0);
    glVertex3f(0.0,0.5,0.0);
glEnd();

glutSwapBuffers(); 

}

следующее выдает неопределенные ошибки ссылок в glVertextAttribPointer, glEnableVertexAttribArray и glDisableVertexAttribArray.

void display() {

glClear( GL_COLOR_BUFFER_BIT ); /* Clear the screen with the clear color */

    // map the border vertices
glVertexAttribPointer(crosshairVertexHandle, 3, GL_FLOAT, GL_FALSE, 0, (const GLvoid*) &crossVertices[0]);
glEnableVertexAttribArray(crosshairVertexHandle);


glLineWidth(2.0f);
glDrawArrays(GL_LINES, 0, 4);
glDisableVertexAttribArray(crosshairVertexHandle);

glutSwapBuffers(); /* Double buffering */

}

Вот ошибка ..

Сборка конфигурации Отладка для проекта ogl_tests **

make all 
Building file: ../src/ogl_tests.cpp
Invoking: Cygwin C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/ogl_tests.d" -MT"src/ogl_tests.d" -o"src/ogl_tests.o" "../src/ogl_tests.cpp"

Finished building: ../src/ogl_tests.cpp

Building target: ogl_tests.exe
Invoking: Cygwin C++ Linker
g++  -o"ogl_tests.exe"  ./src/ogl_tests.o   -lglu32 -lglut32 -lopengl32
./src/ogl_tests.o: In function `_Z7displayv':
/cygdrive/c/Users/David/workspace/ogl_tests/Debug/../src/ogl_tests.cpp:61: undefined reference to `__imp__glVertexAttribPointer@24'
/cygdrive/c/Users/David/workspace/ogl_tests/Debug/../src/ogl_tests.cpp:62: undefined reference to `__imp__glEnableVertexAttribArray@4'
/cygdrive/c/Users/David/workspace/ogl_tests/Debug/../src/ogl_tests.cpp:67: undefined reference to `__imp__glDisableVertexAttribArray@4'
collect2: ld returned 1 exit status
make: *** [ogl_tests.exe] Error 1

Есть идеи? - правильны ли пути cygwin, которые я использую?

Ответы [ 2 ]

1 голос
/ 08 августа 2011

@ Никол Болас дал вам одну часть головоломки, которую я даю вам другую: вы используете функции OpenGL, которые выходят за рамки функциональности OpenGL-1.1, но даже и OpenGL-1.4. В Windows OpenGL функциональность за пределами этих версий должна быть получена с помощью механизма extension .

Самый простой способ сделать это - использовать упаковку расширения, например GLEW или GLEE. GLEW должен быть инициализирован с glewInit() сразу после создания контекста. GLEE может использоваться без инициализации (это происходит неявно при первом вызове функции расширения).

1 голос
/ 08 августа 2011

OpenGL - это , а не OpenGL ES.Это две совершенно разные вещи (даже если они кажутся похожими на поверхности).Если вы используете Vista 64, скорее всего, вы не работаете в системе с работающей реализацией OpenGL ES.

Существует расширение OpenGL, которое позволяет вам создавать контекст OpenGL ES в окнах рабочего стола.Но он еще не реализован широко, и вы не используете его в своем коде.Да, и GLUT не может использовать OpenGL ES.

EGL также широко не доступен, особенно в Windows.Был некоторый шум при написании реализации EGL в Windows, но ничего не вышло.

Так что два ваших заголовка не имеют никакого смысла.Вы должны включать материалы OpenGL, а не OpenGL ES.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...