C ++ Ошибка выполнения Freeglut # 2 - S, Visual Studio C ++ - PullRequest
0 голосов
/ 01 октября 2019

C ++ Я разрабатываю игровой движок, но мой код не работает. Я пытался: изменить положение кода ... Изменение типа

Вот мой код:

...
    #include "pch.h"
    #include <iostream>
    #include "glut.h"

    #include "conio.h"
    using namespace std;

    #include<stdio.h>
    #include "map_loader.h"
    #include "models.h"
    #include "IEDX_POLYTEX.h"
    #include "FONTGER/include/fontmann.h"
    #define KEY_ESC 27 /* GLUT doesn't supply this */
    #pragma comment(lib, "GLAUX_iedx_fonts.lib")

//Void display: i dont give full code. only this part of void Display()
...
    GLuint my_texture[13] = { 0xffaec900, 0x0000ffae, 0xc9ffaec9,
        0xffaec9ff, 0xaec90000, 0x00ffaec9,
        0x000000ff, 0xaec9ffae, 0xc9000000,
        0xffaec900, 0x00000000, 0x00ffaec9 }
        ;
    glTexImage2D(GL_TEXTURE_2D, 0, 3, 16, 16, 0,
        GL_RGB8, GL_UNSIGNED_BYTE, my_texture);
    glGenTextures(34, my_texture);
    glBindTexture(GL_TEXTURE_2D, 34);
...

, когда я запускаю свое приложение для SkiRun-Time Check Failure # 2 - S, Visual StudioC ++

без ошибок компилятора и т. Д.

нет проблем с компоновщиками.

при сбое приложения и попытке нажать кнопку повтора game.exe перестала работать ...

1 Ответ

0 голосов
/ 01 октября 2019

Похоже, вам нужно прочитать введение в OpenGL;этот код не имеет большого смысла.

Я считаю, что конкретная причина ошибки времени выполнения состоит в том, что вы генерируете 34 имени текстуры в массиве, который может уместиться только в 13.
(Внимательно прочитайте документацию. Еслиты не понимаешь, не угадаешь, но продолжаешь учиться.)

Помни, что OpenGL с состоянием, и ты должен делать некоторые вещи в определенном порядке.

Нормальный способ сделать это

//Generate a texture name:
GLuint name = 0;
glGenTextures(1, &name);
// Bind this texture:
glBindTexture(GL_TEXTURE_2D, name);
// Now you can load the texture into OpenGL:
glTexImage2D(GL_TEXTURE_2D, 0, 3, 16, 16, 0,
             GL_RGB8, GL_UNSIGNED_BYTE, my_texture);

Ваши аргументы glTexImage2D также выглядят сомнительными - они, похоже, совсем не соответствуют вашему массиву текстур.

...