MeshComponent::~MeshComponent() { glDeleteVertexArrays(1, &vertexArray); glDeleteBuffers(1, &m_vertexBuffer); if(glIsTexture(meshTexture) == GL_TRUE) glDeleteTextures(1, &meshTexture); if(glIsSampler(meshSampler) == GL_TRUE) glDeleteSamplers(1, &meshSampler); }
extern void free_sampler(SAMPLER *sampler) { assert(sampler != NULL); #ifndef GL_ES_VERSION_2_0 if(glIsSampler(sampler->id)) glDeleteSamplers(1, &sampler->id); #endif // NO GL_ES_VERSION_2_0 sampler->id = 0; sampler->usage = 0; }
void Mesh::loadTexture(const std::string &path) { if(glIsTexture(m_meshTexture) == GL_FALSE) glGenTextures(1, &m_meshTexture); if(glIsSampler(m_meshSampler) == GL_FALSE) glGenSamplers(1, &m_meshSampler); // Setup sampler data glSamplerParameteri(m_meshSampler, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glSamplerParameteri(m_meshSampler, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glSamplerParameteri(m_meshSampler, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); glSamplerParameteri(m_meshSampler, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); SDL_Surface* surface = IMG_Load(path.c_str()); GLint readFormat = GL_RGB; if(surface->format->BytesPerPixel == 4) { if(surface->format->Rmask == 0xFF) readFormat = GL_RGBA; else if(surface->format->Bmask == 0xFF) readFormat = GL_BGRA; } else if(surface->format->BytesPerPixel == 3) { if(surface->format->Rmask == 0xFF) readFormat = GL_RGB; else if(surface->format->Bmask == 0xFF) readFormat = GL_BGR; } if(surface->format->Rmask) GLfloat texDat[] = { 1.f,1.f,1.f,1.f, 0.f,1.f, 0.f, 1.f, 1.f,1.f,1.f,1.f, 0.f,1.f, 0.f, 1.f, }; // Setup texture data glBindTexture(GL_TEXTURE_2D, m_meshTexture); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, surface->w, surface->h, 0, readFormat, GL_UNSIGNED_BYTE, surface->pixels); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_BASE_LEVEL, 0); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0); glBindTexture(GL_TEXTURE_2D, 0); SDL_FreeSurface(surface); }
JNIEXPORT jboolean JNICALL Java_org_lwjgl_opengl_GL33_nglIsSampler(JNIEnv *__env, jclass clazz, jint sampler, jlong __functionAddress) { glIsSamplerPROC glIsSampler = (glIsSamplerPROC)(intptr_t)__functionAddress; UNUSED_PARAMS(__env, clazz) return (jboolean)glIsSampler(sampler); }
JNIEXPORT jboolean JNICALL Java_org_lwjgl_opengl_ARBSamplerObjects_glIsSampler(JNIEnv *__env, jclass clazz, jint sampler) { glIsSamplerPROC glIsSampler = (glIsSamplerPROC)tlsGetFunction(670); UNUSED_PARAM(clazz) return (jboolean)glIsSampler(sampler); }