Merge branch 'master' of gitlab.com:simulant/GLdc
This commit is contained in:
commit
c7526ea5b7
44
GL/draw.c
44
GL/draw.c
|
@ -460,6 +460,8 @@ static inline PolyBuildFunc _calcBuildFunc(const GLenum type) {
|
||||||
return &_buildStrip;
|
return &_buildStrip;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline void nullFloatParseFunc(GLfloat* out, const GLubyte* in) {}
|
||||||
|
|
||||||
static inline void genElementsCommon(
|
static inline void genElementsCommon(
|
||||||
ClipVertex* output,
|
ClipVertex* output,
|
||||||
const GLubyte* iptr, GLuint istride, GLenum type,
|
const GLubyte* iptr, GLuint istride, GLenum type,
|
||||||
|
@ -473,9 +475,9 @@ static inline void genElementsCommon(
|
||||||
) {
|
) {
|
||||||
const FloatParseFunc vertexFunc = _calcVertexParseFunc();
|
const FloatParseFunc vertexFunc = _calcVertexParseFunc();
|
||||||
const ByteParseFunc diffuseFunc = _calcDiffuseParseFunc();
|
const ByteParseFunc diffuseFunc = _calcDiffuseParseFunc();
|
||||||
const FloatParseFunc uvFunc = _calcUVParseFunc();
|
const FloatParseFunc uvFunc = (doTexture) ? _calcUVParseFunc() : &nullFloatParseFunc;
|
||||||
const FloatParseFunc stFunc = _calcSTParseFunc();
|
const FloatParseFunc stFunc = (doMultitexture) ? _calcSTParseFunc() : &nullFloatParseFunc;
|
||||||
const FloatParseFunc normalFunc = _calcNormalParseFunc();
|
const FloatParseFunc normalFunc = (doLighting) ? _calcNormalParseFunc() : &nullFloatParseFunc;
|
||||||
|
|
||||||
const IndexParseFunc indexFunc = _calcParseIndexFunc(type);
|
const IndexParseFunc indexFunc = _calcParseIndexFunc(type);
|
||||||
|
|
||||||
|
@ -487,40 +489,10 @@ static inline void genElementsCommon(
|
||||||
GLuint j = indexFunc(idx);
|
GLuint j = indexFunc(idx);
|
||||||
vertex->flags = PVR_CMD_VERTEX;
|
vertex->flags = PVR_CMD_VERTEX;
|
||||||
vertexFunc(vertex->xyz, vptr + (j * vstride));
|
vertexFunc(vertex->xyz, vptr + (j * vstride));
|
||||||
}
|
|
||||||
|
|
||||||
idx = iptr;
|
|
||||||
vertex = output;
|
|
||||||
for(i = 0; i < count; ++i, idx += istride, ++vertex) {
|
|
||||||
GLuint j = indexFunc(idx);
|
|
||||||
diffuseFunc(vertex->bgra, cptr + (j * cstride));
|
diffuseFunc(vertex->bgra, cptr + (j * cstride));
|
||||||
}
|
uvFunc(vertex->uv, uvptr + (j * uvstride));
|
||||||
|
stFunc(vertex->st, stptr + (j * ststride));
|
||||||
if(doTexture) {
|
normalFunc(vertex->nxyz, nptr + (j * nstride));
|
||||||
idx = iptr;
|
|
||||||
vertex = output;
|
|
||||||
for(i = 0; i < count; ++i, idx += istride, ++vertex) {
|
|
||||||
GLuint j = indexFunc(idx);
|
|
||||||
uvFunc(vertex->uv, uvptr + (j * uvstride));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(doMultitexture) {
|
|
||||||
idx = iptr;
|
|
||||||
vertex = output;
|
|
||||||
for(i = 0; i < count; ++i, idx += istride, ++vertex) {
|
|
||||||
GLuint j = indexFunc(idx);
|
|
||||||
stFunc(vertex->st, stptr + (j * ststride));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(doLighting) {
|
|
||||||
idx = iptr;
|
|
||||||
vertex = output;
|
|
||||||
for(i = 0; i < count; ++i, idx += istride, ++vertex) {
|
|
||||||
GLuint j = indexFunc(idx);
|
|
||||||
normalFunc(vertex->nxyz, nptr + (j * nstride));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -91,10 +91,6 @@ void named_array_release(NamedArray* array, unsigned int new_id) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void* named_array_get(NamedArray* array, unsigned int id) {
|
void* named_array_get(NamedArray* array, unsigned int id) {
|
||||||
if(id == 0) {
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!named_array_used(array, id)) {
|
if(!named_array_used(array, id)) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -110,6 +110,9 @@ void LoadGLTextures() {
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
glEnable(GL_SHARED_TEXTURE_PALETTE_EXT);
|
||||||
|
glColorTableEXT(GL_SHARED_TEXTURE_PALETTE_EXT, GL_RGBA8, image1->palette_width, GL_RGBA, GL_UNSIGNED_BYTE, image1->palette);
|
||||||
|
|
||||||
// Create Texture
|
// Create Texture
|
||||||
glGenTextures(1, &texture[0]);
|
glGenTextures(1, &texture[0]);
|
||||||
glBindTexture(GL_TEXTURE_2D, texture[0]); // 2d texture (x and y size)
|
glBindTexture(GL_TEXTURE_2D, texture[0]); // 2d texture (x and y size)
|
||||||
|
@ -117,8 +120,6 @@ void LoadGLTextures() {
|
||||||
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER, GL_LINEAR); // scale linearly when image bigger than texture
|
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER, GL_LINEAR); // scale linearly when image bigger than texture
|
||||||
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER, GL_LINEAR); // scale linearly when image smalled than texture
|
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER, GL_LINEAR); // scale linearly when image smalled than texture
|
||||||
|
|
||||||
glColorTableEXT(GL_TEXTURE_2D, GL_RGBA8, image1->palette_width, GL_RGBA, GL_UNSIGNED_BYTE, image1->palette);
|
|
||||||
|
|
||||||
// 2d texture, level of detail 0 (normal), 3 components (red, green, blue), x size from image, y size from image,
|
// 2d texture, level of detail 0 (normal), 3 components (red, green, blue), x size from image, y size from image,
|
||||||
// border 0 (normal), rgb color data, unsigned byte data, and finally the data itself.
|
// border 0 (normal), rgb color data, unsigned byte data, and finally the data itself.
|
||||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_COLOR_INDEX8_EXT, image1->width, image1->height, 0, GL_COLOR_INDEX, GL_UNSIGNED_BYTE_TWID_KOS, image1->data);
|
glTexImage2D(GL_TEXTURE_2D, 0, GL_COLOR_INDEX8_EXT, image1->width, image1->height, 0, GL_COLOR_INDEX, GL_UNSIGNED_BYTE_TWID_KOS, image1->data);
|
||||||
|
|
Loading…
Reference in New Issue
Block a user