Example #1
0
void DrawBuffer::Init(bool registerAsHolder) {
	if (inited_)
		return;
	inited_ = true;
	glGenBuffers(1, (GLuint *)&vbo_);
	if (registerAsHolder)
		register_gl_resource_holder(this);
}
Example #2
0
	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);
	}
Example #3
0
	Thin3DGLTexture() : tex_(0), target_(0) {
		generatedMips_ = false;
		canWrap_ = true;
		width_ = 0;
		height_ = 0;
		depth_ = 0;
		glGenTextures(1, &tex_);
		register_gl_resource_holder(this);
	}
Example #4
0
	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);
	}
Example #5
0
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;
}
Example #6
0
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);
}
Example #7
0
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;
}
Example #8
0
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;
}
Example #9
0
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;
}
Example #10
0
	Thin3DGLShaderSet() {
		program_ = 0;
		register_gl_resource_holder(this);
	}
Example #11
0
Texture::Texture() : tex_(0) {
	register_gl_resource_holder(this);

	

}
Example #12
0
Texture::Texture() : id_(0) {
	CheckGLExtensions();
	register_gl_resource_holder(this);
}