私はfreeglutというAPIを使って簡単なポンゲームを作っています。これはhttp://noobtuts.com/cpp/2d-pong-gameで提供されている指示に従います。 APIには、main関数の下で定義したvoidを返すコールバックへのポインタを呼び出す2つの関数が含まれています。しかし、コンパイル時には、指定されたコールバック引数が宣言されていない識別子であることを示すエラーメッセージC2065が表示されます。Visual C++のコールバック関数ポインタを使用したコンパイル
intellisenseが私の上に置かれたときに提供される関数の定義を以下に示します。 glutDisplayFunc void__stdcall
はglutTimerFunc void__stdcall(無効(*コールバック)())
(unsigned int型の時間、無効(*コールバック)(int型)、int型の値)
ここに私のコードです:
#include "stdafx.h"
#include "freeglut.h"
#include <string>
#include <windows.h>
#include <iostream>
#include <conio.h>
#include <sstream>
#include <math.h>
#include <gl\GL.h>
#include <gl\GLU.h>
#pragma comment (lib, "OpenGL32.lib")
//window size and update rate (60 fps)
int width = 500;
int height = 200;
int interval = 1000/60;
int _tmain(int argc, char** argv)
{
//initialize openg 1 (via glut)
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH);
glutInitWindowSize(width, height);
glutCreateWindow("jackfrye.com Pong");
//Register callback functions
glutDisplayFunc(draw);
glutTimerFunc(interval, update, 0);
glutMainLoop();
return 0;
}
void draw() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
//TODO: draw scene
//swap buffers (has to be done at the end);
glutSwapBuffers();
}
void update(int value) {
//Call update() again in 'interval' milliseconds
glutTimerFunc(interval, update, 0);
//Redisplay frame
glutPostRedisplay();
}
私はmain関数の中にコールバックを置こうとしましたが、これは正しいとは思わず、まだコンパイルしません。
はい、そうです。私は基本的な手続きをしていたときにC++クラスでそれを学ぶことを覚えています。私はそれ以来、おっとりしていたので、私はちょっと忘れました。 –