3

シェーダーをテストしてコンパイルしようとする OpenGL プログラムに取り組んでいます。ただし、glCreateShader() への呼び出し (および glDeleteShader などの他のシェーダー呼び出し) では、次のエラーが発生します。

(このエラーは glCreateShader() によるものです)

Error   3   error LNK2001: unresolved external symbol _pglCreateShader  

私はVisual Studio 2012とWindows 7を使用しています。最新のドライバーを含む最新のnvidiaカードの1つを入手したため、OpenGLバージョンにすることはできません。

OpenGL Superbible 4th エディションのすべてのヘルパー関数に glTools ヘッダー ファイルを使用しています。これらのファイルの使用にエラーがあるかどうかわかりませんか?

これも役立つ場合に備えて、インクルードを投稿します。

#pragma once

#include <Windows.h>

// Basic C++ includes
#include <stdio.h>
#include <tchar.h>
#include <iostream>
#include <string>
#include <sstream>
#include <fstream>
#include <vector>
using namespace std;

// OpenGL specific and GUI includes
#include "shared/gltools.h"
#include "shared/math3d.h"
#include <SOIL.h>

そしてリンカーオプション:

soil.lib;opengl32.lib;gltools.lib;


わかりました、答えのおかげで問題は解決しました:

「glee.h」の代わりに「gl/glew.h」を含めるように glTools.h を編集し、リンカーに ;glew32.lib オプションを追加し、メイン ループに入る前に glewInit() を追加しました。また、GLEW ライブラリ、dll、およびインクルードを適切なフォルダーに追加したところ、すべての機能が正常に機能しました。:)

4

2 に答える 2

3

GLEWのコピーを取得して、拡張機能のロードを処理します。

でそれをすることは...迷惑です。

于 2013-01-28T19:41:04.043 に答える
2

WindowsではWGLを使用しますが、WGLを使用する場合は、GL関数に直接リンクすることはできません。あなたが得るすべての機能はこれらです; wglGetProcAddress使用する前に、(ここにあるように)必要なGLエントリポイントへのポインタを動的に取得する必要があります。

基本的に、GLエントリポイント関数ポインタの読み込みを手動で行う場合、Windows上のOpenGLはPITAです。GLEWなどのユーティリティライブラリを使用してポインタを取得する方がはるかに簡単です。

于 2013-01-28T19:43:59.980 に答える