私のプログラムを実行すると、このエラーが表示されますが、問題点を教えてください。それをどうやって修正することができますか?0x1000A456(glut32.dll)で例外がスローされるOpenGL
マイコード:
#include <windows.h>
#include <gl/gl.h>
#include <gl/glu.h>
#include <gl/glut.h>
#include <GLFW/glfw3.h>
#include "Rect.h"
const int rows = 40;
const int cols = 20;
const int length = rows * cols;
int width = 905;
int height = 720;
Rect * list[length];
void createList() {
for (int i = 0; i < length; i++) {
list[i] = new Rect();
}
}
void createQuad(int index) {
int wQuad = (width/20) - 5;
int hQuad = 12;
int margin = 5;
int marginTop = (index/20) * (hQuad + margin) + margin;
int marginLeft = (index % 20) * (wQuad + margin) + margin;
if (list[index]->getVisible()) {
glColor3ub(list[index]->getR(), list[index]->getG(), list[index]- >getB());
} else {
glColor3ub(0, 0, 0);
}
glBegin(GL_QUADS);
glVertex2i(marginLeft , marginTop ); // A
glVertex2i(marginLeft + wQuad, marginTop ); // B
glVertex2i(marginLeft + wQuad, marginTop + hQuad); // D
glVertex2i(marginLeft , marginTop + hQuad); // C
glEnd();
}
void display2(void) {
glClear(GL_COLOR_BUFFER_BIT);
for (int p = 0; p < length; p++) {
createQuad(p);
}
glutSwapBuffers();
}
void init() {
glClearColor(0, 0, 0, 0);
glOrtho(0, 905, 720, 0, -0.5f, 0.5f);
glViewport(0, 0, 905, 720);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
}
int CALLBACK WinMain(
__in HINSTANCE hInstance,
__in HINSTANCE hPrevInstance,
__in LPSTR lpCmdLine,
__in int nCmdShow
) {
GLFWwindow* window;
// Initialize the library
if (!glfwInit())
return -1;
// Create the window
window = glfwCreateWindow(905, 720, "Color Game", NULL, NULL);
if (!window) {
glfwTerminate();
return -1;
}
glfwMakeContextCurrent(window);
init();
// Create list...
createList();
char *myargv[1];
int myargc = 1;
myargv[0] = strdup("ColorGame");
while (!glfwWindowShouldClose(window)) {
glutInit(&myargc, myargv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
glutInitWindowPosition(100, 100);
glutInitWindowSize(width, height);
glutDisplayFunc(display2);
// display2();
// glutReshapeFunc(reshape);
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwTerminate();
return 0;
}
エラーは、この行である:私は置けば
glutDisplayFunc(display2);
のみにてDisplay();作品が、私はglutDisplayFunc(display2)を配置する必要があります。なぜなら私はこの行でマウスイベントを処理する必要があるからです。glutMouseFunc(マウス);私がglutMouseFunc(マウス)を置いた場合;同じエラーが表示されます。
、このような問題を解決するための適切なツールは、あなたのデバッガです。スタックオーバーフローを尋ねる前に、コードを一行ずつ進める必要があります。詳しいヘルプは、[小さなプログラムをデバッグする方法(Eric Lippert)](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)を参照してください。最低限、問題を再現する[最小、完全、および検証可能](http://stackoverflow.com/help/mcve)の例と、その問題を再現するためのデバッガ。 –
デバッガを使用しようとしましたが、 "glutDisplayFunc(display2);"という行が見つかりました。しかし、私はそれを解決する方法を知らない。 – Cava
GLUT xまたはGLFWを使用してください。 [mcve]で編集します。 – genpfault