void DrawBuffer::Init(bool registerAsHolder) { if (inited_) return; inited_ = true; glGenBuffers(1, (GLuint *)&vbo_); if (registerAsHolder) register_gl_resource_holder(this); }
Thin3DGLTexture(T3DTextureType type, T3DDataFormat format, int width, int height, int depth, int mipLevels) : tex_(0), target_(TypeToTarget(type)), format_(format), mipLevels_(mipLevels) { generatedMips_ = false; canWrap_ = true; width_ = width; height_ = height; depth_ = depth; glGenTextures(1, &tex_); register_gl_resource_holder(this); }
Thin3DGLTexture() : tex_(0), target_(0) { generatedMips_ = false; canWrap_ = true; width_ = 0; height_ = 0; depth_ = 0; glGenTextures(1, &tex_); register_gl_resource_holder(this); }
Thin3DGLBuffer(size_t size, uint32_t flags) { glGenBuffers(1, &buffer_); target_ = (flags & T3DBufferUsage::INDEXDATA) ? GL_ELEMENT_ARRAY_BUFFER : GL_ARRAY_BUFFER; usage_ = 0; if (flags & T3DBufferUsage::DYNAMIC) usage_ = GL_STREAM_DRAW; else usage_ = GL_STATIC_DRAW; knownSize_ = 0; register_gl_resource_holder(this); }
GLSLProgram *glsl_create_source(const char *vshader_src, const char *fshader_src) { GLSLProgram *program = new GLSLProgram(); program->program_ = 0; program->vsh_ = 0; program->fsh_ = 0; program->vshader_source = vshader_src; program->fshader_source = fshader_src; strcpy(program->name, "[srcshader]"); strcpy(program->vshader_filename, ""); strcpy(program->fshader_filename, ""); if (glsl_recompile(program)) { active_programs.insert(program); } register_gl_resource_holder(program); return program; }
TransformDrawEngine::TransformDrawEngine() : collectedVerts(0), prevPrim_(GE_PRIM_INVALID), dec_(0), lastVType_(-1), curVbo_(0), shaderManager_(0), textureCache_(0), framebufferManager_(0), numDrawCalls(0), vertexCountInDrawCalls(0), uvScale(0) { decimationCounter_ = VERTEXCACHE_DECIMATION_INTERVAL; // Allocate nicely aligned memory. Maybe graphics drivers will // appreciate it. // All this is a LOT of memory, need to see if we can cut down somehow. decoded = (u8 *)AllocateMemoryPages(DECODED_VERTEX_BUFFER_SIZE); decIndex = (u16 *)AllocateMemoryPages(DECODED_INDEX_BUFFER_SIZE); transformed = (TransformedVertex *)AllocateMemoryPages(TRANSFORMED_VERTEX_BUFFER_SIZE); transformedExpanded = (TransformedVertex *)AllocateMemoryPages(3 * TRANSFORMED_VERTEX_BUFFER_SIZE); quadIndices_ = new u16[6 * QUAD_INDICES_MAX]; for (int i = 0; i < QUAD_INDICES_MAX; i++) { quadIndices_[i * 6 + 0] = i * 4; quadIndices_[i * 6 + 1] = i * 4 + 2; quadIndices_[i * 6 + 2] = i * 4 + 1; quadIndices_[i * 6 + 3] = i * 4 + 1; quadIndices_[i * 6 + 4] = i * 4 + 2; quadIndices_[i * 6 + 5] = i * 4 + 3; } if (g_Config.bPrescaleUV) { uvScale = new UVScale[MAX_DEFERRED_DRAW_CALLS]; } memset(vbo_, 0, sizeof(vbo_)); memset(ebo_, 0, sizeof(ebo_)); indexGen.Setup(decIndex); decJitCache_ = new VertexDecoderJitCache(); InitDeviceObjects(); register_gl_resource_holder(this); }
GLSLProgram *glsl_create_source(const char *vshader_src, const char *fshader_src, std::string *error_message) { GLSLProgram *program = new GLSLProgram(); program->program_ = 0; program->vsh_ = 0; program->fsh_ = 0; program->vshader_source = vshader_src; program->fshader_source = fshader_src; strcpy(program->name, "[srcshader]"); strcpy(program->vshader_filename, ""); strcpy(program->fshader_filename, ""); if (glsl_recompile(program, error_message)) { active_programs.insert(program); } else { ELOG("Failed compiling GLSL program from source strings"); delete program; return 0; } register_gl_resource_holder(program); return program; }
GLSLProgram *glsl_create(const char *vshader, const char *fshader, std::string *error_message) { GLSLProgram *program = new GLSLProgram(); program->program_ = 0; program->vsh_ = 0; program->fsh_ = 0; program->vshader_source = 0; program->fshader_source = 0; strcpy(program->name, vshader + strlen(vshader) - 15); strcpy(program->vshader_filename, vshader); strcpy(program->fshader_filename, fshader); if (glsl_recompile(program, error_message)) { active_programs.insert(program); } else { ELOG("Failed compiling GLSL program: %s %s", vshader, fshader); delete program; return 0; } register_gl_resource_holder(program); return program; }
GLSLProgram *glsl_create(const char *vshader, const char *fshader) { GLSLProgram *program = new GLSLProgram(); program->program_ = 0; program->vsh_ = 0; program->fsh_ = 0; program->vshader_source = 0; program->fshader_source = 0; strcpy(program->name, vshader + strlen(vshader) - 15); strcpy(program->vshader_filename, vshader); strcpy(program->fshader_filename, fshader); if (glsl_recompile(program)) { active_programs.insert(program); } else { FLOG("Failed building GLSL program: %s %s", vshader, fshader); } register_gl_resource_holder(program); return program; }
Thin3DGLShaderSet() { program_ = 0; register_gl_resource_holder(this); }
Texture::Texture() : tex_(0) { register_gl_resource_holder(this); }
Texture::Texture() : id_(0) { CheckGLExtensions(); register_gl_resource_holder(this); }