1

私はpbを表示するためだけにprogを最小限に減らしました:cmakeは文句を言わず、makeもしません(Linux / libglew 1.5 / cmake 2.8.2を実行しています)。プログラムはsegfaultsであり、pbを解決するためになぜ/どのステップを実行する必要があるのか​​わかりません。

render.cppのソース:

#include <GL/glew.h>
#include <GL/glut.h>
#include <GL/glext.h>
#ifndef WIN32
#include <GL/glx.h>
#endif

#include <iostream>
#include <assert.h>

using namespace std;

int main()
{
    cout << "Before init" << endl;
    GLenum err = glewInit();
    cout << "After init" << endl;
    if (err != GLEW_OK)
        cout << "Initialization error" << endl;
    else{        
        cout << "Successful init" << endl;
        assert(glCreateShader);
        GLuint f = glCreateShader(GL_FRAGMENT_SHADER);
    }
}

CMakeListの内容は次のとおりです。

cmake_minimum_required (VERSION 2.6)
project (render)
IF(CMAKE_COMPILER_IS_GNUCC)
  SET(CMAKE_CXX_FLAGS
    "${CMAKE_CXX_FLAGS} -Wall -std=c++0x")
ENDIF(CMAKE_COMPILER_IS_GNUCC)

# Some directory shortcuts
SET(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR}/conf)

INCLUDE(FindOpenGL REQUIRED)
INCLUDE(FindGLEW REQUIRED)
INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIR})
INCLUDE_DIRECTORIES(${GLEW_INCLUDE_DIR})

message(${OPENGL_LIBRARIES})
message(${GLEW_INCLUDE_DIR})
message(${GLEW_LIBRARIES})

add_executable(render render.cpp)
target_link_libraries(render ${GLEW_LIBRARIES} ${OPENGL_LIBRARIES})

前述のように、glewInit()の呼び出しでコンパイルおよびsegfaultされます。この時点で何を検索すればよいかわかりません。どんな助けでも素晴らしいでしょう、

ありがとう

4

1 に答える 1

1

誰にとっても役立つかもしれませんが、私はそれを解決しました:openGLを使用すると、glewInit()を呼び出す前にコンテキストを作成する必要があります。これは、SDL ライブラリを使用して行うことができます (このタスクを簡素化します)。このチュートリアルを見てください。

于 2011-02-27T16:54:37.317 に答える