Domanda

I keep having issues with glTexImage2D and it is stopping me from rendering to the screen.

Here is my code:

#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");

}

I've just got the error recently but I don't understand what the problem could be. Could any point me in the right direction?

È stato utile?

Soluzione

The only real problem is that you never Enabled GL_TEXTURE_2D for 2D rendering.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top