OpenGL (Code::Blocks) で頂点バッファー オブジェクトを使用しようとしていますが、「glGenBuffers はこのスコープで宣言されていません」というエラーが発生し続けたため、これらを実際に使用するには追加の手順を実行する必要があるようです。これらの問題を処理するロード ライブラリ GLEW をインストールすることで、これらの「拡張」機能を使用できることがわかりました。
GLEW Windows バイナリをダウンロードしました。glew32.dll を Windows/System32 フォルダー内に配置し、glew32 を MinGW の lib フォルダーに追加し、インクルードを MinGW の include フォルダーにも追加しました。安全のために、lib の検索ディレクトリを手動で追加し、Code::Blocks にも含めました。また、リンカー オプションに「-lglew32」を追加しました。
Glew と Glut を次のように含めました。
#ifndef INCLUDES_H_INCLUDED
#define INCLUDES_H_INCLUDED
/* Main Header file that contains all the HEADER */
#include <windows.h>
//Some Main constants
#define PI 3.14159265
//Standard includes
#include <stdio.h>
#include <string>
#include <algorithm>
#include <math.h>
#include <iostream>
#include <vector>
#include <ctime>
using namespace std;
// Open GL and GLUT
#include <gl/glew.h>
#include <gl/glut.h>
/* Game Headers */
#include "Game.h"
#include "Functions.h"
#endif // INCLUDES_H_INCLUDED
私に関する限り、すべてが動作するはずですが、コンパイル時に次のエラーが発生します:
'GLAPI' は型に名前を付けていません
glut と glew を初期化するメイン関数
int main(int argc, char* args[])
{
// #1: GLUT window initialization
glutInit(&argc, args);
glutInitDisplayMode(GLUT_RGB|GLUT_DOUBLE);
glutInitWindowSize(width, height);
glutInitWindowPosition(width/2, height/2);
glutCreateWindow("OpenGL 3D Programming.");
//glutFullScreen(); //optional
// #2: Registering callbacks
glutReshapeFunc(reshape);
glutDisplayFunc(display);
glewInit();
// #3: GLUT main loop
game.init(width, height);
glutMainLoop();
return 0;
}
Code::Blocks のビルド オプションの完全なリスト
-lglu32
-lfreeglut
-lglew32
-lwinmm -lgdi32
-lmingw32 -lopengl32
-static-libgcc -static-libstdc++
私は今完全に立ち往生しており、OpenGL は、現時点で Vertex Buffers を使用して OpenGL の学習を開始することを非常に困難にしています。私が見逃している何か間違ったことはありますか?
更新
Oké、私は現時点で何かが働いています。すべてのインクルードとライブラリを Code::Blocks/mingw フォルダーにも追加し (C:/MinGW フォルダーのみではなく)、GLAPI エラーを失いました。
使用したすべての手順についてよくわからないため、現時点でフェイルプルーフ ビルドであるかどうかはわかりませんが、今のところ機能しているようです。