Ошибки нарушения доступа к функции glTexImage2D ()

У меня продолжают возникать проблемы с glTexImage2D, и это мешает мне рендеринга на экран.

Вот мой код:

#include <glew.h>
#include <wglew.h>
#include <stdio.h>
#include <iostream>
#include <gl\GL.h>
#include <SDL.h>
#include "SDL_image.h"
GLuint _texturebufferID;
GLuint _vertexBufferID;
GLuint texturebufferID;

int SCREEN_WIDTH = 740;
int SCREEN_HEIGHT = 520;
int mode;

bool processing = true;

SDL_Surface* image;
SDL_Window* window;
SDL_Renderer* renderer;
SDL_GLContext context;
SDL_Surface* surface;
SDL_Event window_key;

typedef struct {

GLfloat positionCoordinates[3];
GLfloat textureCoordinates[2];

} Texture;

Texture vertices[] =
{
//  |        Pixels       |--|coords|
{{1.0f,     0.0f, 0.0f}, {0.0f,   0.0f}},
{{0.0f,    43.0f, 0.0f}, {0.0f,   1.0f}},
{{168.0f,  43.0f, 0.0f}, {1.0f,   1.0f}},
{{168.0f,   0.0f, 0.0f}, {1.0f,   0.0f}}

};

GLuint loadandbuffersprite(const char *filename)
{

image = IMG_Load(filename);

glGenTextures(1, &texturebufferID);
glBindTexture(GL_TEXTURE_2D, texturebufferID);

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);

glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, image->w, image->h, 0, GL_RGBA, GL_UNSIGNED_BYTE, image->pixels); //Access Violation

SDL_FreeSurface( image );

return texturebufferID;

}

void render()
{glEnable(GL_TEXTURE_2D);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

glMatrixMode(GL_PROJECTION);
glMatrixMode(GL_MODELVIEW);

glGenBuffers(1, &_vertexBufferID);
glBindBuffer(GL_ARRAY_BUFFER, _vertexBufferID);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices), vertices,
GL_STATIC_DRAW);

glEnableClientState(GL_VERTEX_ARRAY);
glVertexPointer(3, GL_FLOAT, sizeof(Texture), (GLvoid *)
offsetof(Texture, positionCoordinates));

glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glTexCoordPointer(2, GL_FLOAT, sizeof(Texture), (GLvoid *)
offsetof(Texture, textureCoordinates));

glLoadIdentity();

loadandbuffersprite("hane_stand.png");

}

Я только что получил ошибку недавно, но я не понимаю, в чем проблема. Может ли кто-нибудь направить меня в правильном направлении?

0

Решение

Единственная реальная проблема заключается в том, что вы никогда не включали GL_TEXTURE_2D для 2D-рендеринга.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]