From 34163498bdfabf48e3ef0d77b6590950296d7796 Mon Sep 17 00:00:00 2001 From: lerabot Date: Thu, 21 Mar 2019 12:13:03 -0400 Subject: [PATCH 1/4] early test for testing depth/alpha function with .DTEX --- include/glkos.h.gch | Bin 0 -> 13941 bytes samples/Makefile | 1 + samples/depth_funcs_alpha_testing/Makefile | 30 +++ samples/depth_funcs_alpha_testing/gl_png.c | 249 ++++++++++++++++++ samples/depth_funcs_alpha_testing/gl_png.h | 42 +++ .../depth_funcs_alpha_testing/gl_png.h.gch | Bin 0 -> 13941 bytes samples/depth_funcs_alpha_testing/main.c | 150 +++++++++++ .../romdisk/convertToDtex.sh | 17 ++ .../romdisk/disk.png | Bin 0 -> 4847 bytes .../romdisk/disk_1555.dtex | Bin 0 -> 8208 bytes .../romdisk/disk_4444.dtex | Bin 0 -> 8208 bytes .../romdisk/disk_565.dtex | Bin 0 -> 8208 bytes .../romdisk/preview_1555.png | Bin 0 -> 1778 bytes .../romdisk/preview_4444.png | Bin 0 -> 1776 bytes .../romdisk/preview_565.png | Bin 0 -> 1893 bytes .../romdisk/spritesheet.dtex | Bin 0 -> 524304 bytes 16 files changed, 489 insertions(+) create mode 100644 include/glkos.h.gch create mode 100644 samples/depth_funcs_alpha_testing/Makefile create mode 100644 samples/depth_funcs_alpha_testing/gl_png.c create mode 100644 samples/depth_funcs_alpha_testing/gl_png.h create mode 100644 samples/depth_funcs_alpha_testing/gl_png.h.gch create mode 100644 samples/depth_funcs_alpha_testing/main.c create mode 100755 samples/depth_funcs_alpha_testing/romdisk/convertToDtex.sh create mode 100644 samples/depth_funcs_alpha_testing/romdisk/disk.png create mode 100644 samples/depth_funcs_alpha_testing/romdisk/disk_1555.dtex create mode 100644 samples/depth_funcs_alpha_testing/romdisk/disk_4444.dtex create mode 100644 samples/depth_funcs_alpha_testing/romdisk/disk_565.dtex create mode 100644 samples/depth_funcs_alpha_testing/romdisk/preview_1555.png create mode 100644 samples/depth_funcs_alpha_testing/romdisk/preview_4444.png create mode 100644 samples/depth_funcs_alpha_testing/romdisk/preview_565.png create mode 100644 samples/depth_funcs_alpha_testing/romdisk/spritesheet.dtex diff --git a/include/glkos.h.gch b/include/glkos.h.gch new file mode 100644 index 0000000000000000000000000000000000000000..c2e3e27c92ff3ab6319bad1010524798b971c930 GIT binary patch literal 13941 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 G`2PTO_jzdm literal 0 HcmV?d00001 diff --git a/samples/Makefile b/samples/Makefile index 1d588b5..c0c578b 100644 --- a/samples/Makefile +++ b/samples/Makefile @@ -25,3 +25,4 @@ all: $(KOS_MAKE) -C paletted all $(KOS_MAKE) -C paletted_pcx all $(KOS_MAKE) -C depth_funcs all + $(KOS_MAKE) -C depth_funcs_alpha_testing all diff --git a/samples/depth_funcs_alpha_testing/Makefile b/samples/depth_funcs_alpha_testing/Makefile new file mode 100644 index 0000000..2c09473 --- /dev/null +++ b/samples/depth_funcs_alpha_testing/Makefile @@ -0,0 +1,30 @@ +TARGET = depth_funcs.elf +OBJS = main.o gl_png.o +KOS_CFLAGS += -std=c99 + +all: rm-elf $(TARGET) + +include $(KOS_BASE)/Makefile.rules + +clean: + -rm -f $(TARGET) $(OBJS) romdisk.* + +rm-elf: + -rm -f $(TARGET) romdisk.* + +$(TARGET): $(OBJS) romdisk.o + $(KOS_CC) $(KOS_CFLAGS) $(KOS_LDFLAGS) -o $(TARGET) $(KOS_START) \ + $(OBJS) romdisk.o $(OBJEXTRA) -lm -lkosutils $(KOS_LIBS) + +romdisk.img: + $(KOS_GENROMFS) -f romdisk.img -d romdisk -v + +romdisk.o: romdisk.img + $(KOS_BASE)/utils/bin2o/bin2o romdisk.img romdisk romdisk.o + +run: $(TARGET) + $(KOS_LOADER) $(TARGET) + +dist: + rm -f $(OBJS) romdisk.o romdisk.img + $(KOS_STRIP) $(TARGET) diff --git a/samples/depth_funcs_alpha_testing/gl_png.c b/samples/depth_funcs_alpha_testing/gl_png.c new file mode 100644 index 0000000..2ed3cdb --- /dev/null +++ b/samples/depth_funcs_alpha_testing/gl_png.c @@ -0,0 +1,249 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "gl_png.h" + +#define CLEANUP(x) { ret = (x); goto cleanup; } + +GLfloat global_diffuse[] = {1.0, 1.0, 1.0, 1.0}; +GLfloat global_ambient[] = {1.0, 1.0, 1.0, 1.0}; + + +int dtex_to_gl_texture(texture *tex, char* filename) { + // Load Texture + Image *image; + + // allocate space for texture + image = (Image *) malloc(sizeof(Image)); + if (image == NULL) { + printf("No memory for .DTEX file\n"); + return(0); + } + + FILE* file = NULL; + + // make sure the file is there. + if ((file = fopen(filename, "rb")) == NULL) + { + printf("File not found"); + return 0; + } + + struct { + char id[4]; // 'DTEX' + GLushort width; + GLushort height; + GLuint type; + GLuint size; + } header; + + fread(&header, sizeof(header), 1, file); + + GLboolean twiddled = (header.type & (1 << 26)) < 1; + GLboolean compressed = (header.type & (1 << 30)) > 0; + GLboolean mipmapped = (header.type & (1 << 31)) > 0; + GLboolean strided = (header.type & (1 << 25)) > 0; + GLuint format = (header.type >> 27) & 0b111; + + image->data = (char *) malloc (header.size); + image->sizeX = header.width; + image->sizeY = header.height; + image->dataSize = header.size; + + GLuint expected = 2 * header.width * header.height; + GLuint ratio = (GLuint) (((GLfloat) expected) / ((GLfloat) header.size)); + + fread(image->data, image->dataSize, 1, file); + fclose(file); + + if(compressed) { + printf("Compressed - "); + if(twiddled) { + printf("Twiddled - "); + switch(format) { + case 0: { + if(mipmapped) { + image->internalFormat = GL_COMPRESSED_ARGB_1555_VQ_MIPMAP_TWID_KOS; + } else { + image->internalFormat = GL_COMPRESSED_ARGB_1555_VQ_TWID_KOS; + } + } break; + case 1: { + if(mipmapped) { + image->internalFormat = GL_COMPRESSED_RGB_565_VQ_MIPMAP_TWID_KOS; + } else { + image->internalFormat = GL_COMPRESSED_RGB_565_VQ_TWID_KOS; + } + } break; + case 2: { + if(mipmapped) { + image->internalFormat = GL_COMPRESSED_ARGB_4444_VQ_MIPMAP_TWID_KOS; + } else { + image->internalFormat = GL_COMPRESSED_ARGB_4444_VQ_TWID_KOS; + } + } + break; + default: + fprintf(stderr, "Invalid texture format"); + return 0; + } + } else { + switch(format) { + case 0: { + if(mipmapped) { + image->internalFormat = GL_COMPRESSED_ARGB_1555_VQ_MIPMAP_KOS; + } else { + image->internalFormat = GL_COMPRESSED_ARGB_1555_VQ_KOS; + } + } break; + case 1: { + if(mipmapped) { + image->internalFormat = GL_COMPRESSED_RGB_565_VQ_MIPMAP_KOS; + } else { + image->internalFormat = GL_COMPRESSED_RGB_565_VQ_KOS; + } + } break; + case 2: { + if(mipmapped) { + image->internalFormat = GL_COMPRESSED_ARGB_4444_VQ_MIPMAP_KOS; + } else { + image->internalFormat = GL_COMPRESSED_ARGB_4444_VQ_KOS; + } + } + break; + default: + fprintf(stderr, "Invalid texture format"); + return 0; + } + } + } else { + printf("Uncompressed - "); + //printf("Color:%u -", format); + switch(format) { + + case 0: + image->internalFormat = GL_UNSIGNED_SHORT_1_5_5_5_REV_TWID_KOS; + //image->internalFormat = GL_UNSIGNED_SHORT_1_5_5_5_REV; + break; + case 1: + image->internalFormat = GL_UNSIGNED_SHORT_5_6_5_REV; + break; + case 2: + image->internalFormat = GL_UNSIGNED_SHORT_4_4_4_4_REV; + break; + } + } + printf("\n"); + + // Create Texture + GLuint texture_id; + glGenTextures(1, &texture_id); + glBindTexture(GL_TEXTURE_2D, texture_id); // 2d texture (x and y size) + + GLint newFormat = format; + GLint colorType = GL_RGB; + + if (image->internalFormat == GL_UNSIGNED_SHORT_1_5_5_5_REV_TWID_KOS || + image->internalFormat == GL_UNSIGNED_SHORT_4_4_4_4_REV){ + newFormat = GL_BGRA; + colorType = GL_RGBA; + printf("Reversing RGBA\n"); + } + + if (image->internalFormat == GL_UNSIGNED_SHORT_5_6_5_REV){ + newFormat = GL_RGB; + colorType = GL_RGB; + printf("Reversing RGB\n"); + } + + glTexImage2D(GL_TEXTURE_2D, 0, + colorType, image->sizeX, image->sizeY, 0, + newFormat, image->internalFormat, image->data); + + tex->id = texture_id; + tex->w = image->sizeX; + tex->h = image->sizeY; + tex->u = 0.f; + tex->v = 0.f; + tex->a = tex->light = 1; + tex->color[0] = tex->color[1] = tex->color[2] = 1.0f; + tex->uSize = tex->vSize = 1.0f; + tex->xScale = tex->yScale = 1.0f; + tex->format = image->internalFormat; + tex->min_filter = tex->mag_filter = GL_NEAREST; + tex->blend_source = GL_SRC_ALPHA; + tex->blend_dest = GL_ONE_MINUS_SRC_ALPHA; + strcpy(tex->path, filename); + + printf("Texture size: %d x %d\n", image->sizeX, image->sizeY); + printf("Texture ratio: %d\n", ratio); + printf("Texture size: %d x %d\n", image->sizeX, image->sizeY); + printf("Texture %s loaded\n", tex->path); + + return(1); +}; + +void draw_textured_quad(texture *tex) { + if(glIsTexture(tex->id)) { + + GLfloat vertex_data[] = { + /* 2D Coordinate, texture coordinate */ + 0, 1, 0, + 1, 1, 0, + 1, 0, 0, + 0, 0, 0 + }; + + GLfloat uv_data[] = { + /* 2D Coordinate, texture coordinate */ + 0, 1, + 1, 1, + 1, 0, + 0, 0 + }; + + GLfloat normal_data[] = { + /* 2D Coordinate, texture coordinate */ + 0.0, 0.0, 1.0, + 0.0, 0.0, 1.0, + 0.0, 0.0, 1.0, + 0.0, 0.0, 1.0 + }; + + /* + glBindTexture(GL_TEXTURE_2D, tex->id); // choose the texture to use. + + glBegin(GL_QUADS); // begin drawing a cube + // Front Face (note that the texture's corners have to match the quad's corners) + glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 0.0f); // Bottom Left Of The Texture and Quad + glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 0.0f); // Bottom Right Of The Texture and Quad + glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 0.0f); // Top Right Of The Texture and Quad + glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 0.0f); // Top Left Of The Texture and Quad + glEnd(); + */ + + glEnable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D, tex->id); + glEnableClientState(GL_VERTEX_ARRAY); + glEnableClientState(GL_TEXTURE_COORD_ARRAY); + glEnableClientState(GL_NORMAL_ARRAY); + + glVertexPointer (3, GL_FLOAT, 0, vertex_data); + glTexCoordPointer (2, GL_FLOAT, 0, uv_data); + glNormalPointer (GL_FLOAT, 0, normal_data); + + glDrawArrays(GL_QUADS, 0, 4); + + glDisableClientState(GL_VERTEX_ARRAY); + glDisableClientState(GL_TEXTURE_COORD_ARRAY); + glDisableClientState(GL_NORMAL_ARRAY); + glDisable(GL_TEXTURE_2D); + } +} diff --git a/samples/depth_funcs_alpha_testing/gl_png.h b/samples/depth_funcs_alpha_testing/gl_png.h new file mode 100644 index 0000000..21070b7 --- /dev/null +++ b/samples/depth_funcs_alpha_testing/gl_png.h @@ -0,0 +1,42 @@ +#ifndef __GL_PNG_H__ +#define __GL_PNG_H__ + +#include +#include +#include + +typedef struct _texture { + GLuint id; + GLenum format; + GLenum min_filter; + GLenum mag_filter; + GLenum blend_source; + GLenum blend_dest; + int loaded; + uint16_t w, h; // width / height of texture image + int size[2]; + float u, v; //uv COORD + float uSize, vSize; // uvSize + float xScale, yScale; //render scale + float a; //alpha + float light; //alpha + float color[3]; + char path[32]; +} texture; + +/* DTEX Image type - contains height, width, and data */ +typedef struct Image { + unsigned long sizeX; + unsigned long sizeY; + char *data; + GLenum internalFormat; + GLboolean mipmapped; + unsigned int dataSize; +} Image; + + +int dtex_to_gl_texture(texture *tex, char* filename); +void draw_textured_quad(texture *tex); + + +#endif diff --git a/samples/depth_funcs_alpha_testing/gl_png.h.gch b/samples/depth_funcs_alpha_testing/gl_png.h.gch new file mode 100644 index 0000000000000000000000000000000000000000..c2e3e27c92ff3ab6319bad1010524798b971c930 GIT binary patch literal 13941 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 G`2PTO_jzdm literal 0 HcmV?d00001 diff --git a/samples/depth_funcs_alpha_testing/main.c b/samples/depth_funcs_alpha_testing/main.c new file mode 100644 index 0000000..9c9bce6 --- /dev/null +++ b/samples/depth_funcs_alpha_testing/main.c @@ -0,0 +1,150 @@ + +#include "gl.h" +#include "glu.h" +#include "glkos.h" +#include "gl_png.h" + +//$KOS_BASE/utils/texconv/texconv --in disk.png --format ARGB4444 --preview disk_preview.png --out disk.dtex + +extern uint8 romdisk[]; +KOS_INIT_ROMDISK(romdisk); +texture t; +int blendActive = -1; +/* floats for x rotation, y rotation, z rotation */ +float xrot, yrot, zrot; + +/* A general OpenGL initialization function. Sets all of the initial parameters. */ +void InitGL(int Width, int Height) // We call this right after our OpenGL window is created. +{ + + glClearColor(0.0f, 0.0f, 0.0f, 0.0f); // This Will Clear The Background Color To Black + glClearDepth(1.0); // Enables Clearing Of The Depth Buffer + glShadeModel(GL_SMOOTH); // Enables Smooth Color Shading + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); // Reset The Projection Matrix + gluPerspective(45.0f,(GLfloat)Width/(GLfloat)Height,0.1f,100.0f); // Calculate The Aspect Ratio Of The Window + glEnable(GL_TEXTURE_2D); + glMatrixMode(GL_MODELVIEW); + + /* + //FROM REAPERI CYCLE + GLfloat modelAmbient[4] = {0.8, 0.8, 0.8, 1.0}; + GLfloat ambient[4] = {0.2, 0.2, 0.2, 1.0}; + GLfloat diffuse[4] = {1.0, 1.0, 1.0, 1.0}; + GLfloat specular[4] = {0.0, 0.0, 0.0, 1.0}; + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glLightfv(GL_LIGHT0, GL_AMBIENT, modelAmbient); + glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); + glLightfv(GL_LIGHT0, GL_SPECULAR, specular); + //glDisable(GL_COLOR_MATERIAL); + */ +} + +/* The function called when our window is resized (which shouldn't happen, because we're fullscreen) */ +void ReSizeGLScene(int Width, int Height) +{ + if (Height == 0) // Prevent A Divide By Zero If The Window Is Too Small + Height = 1; + + glViewport(0, 0, Width, Height); // Reset The Current Viewport And Perspective Transformation + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + + gluPerspective(45.0f,(GLfloat)Width/(GLfloat)Height,0.1f,100.0f); + glMatrixMode(GL_MODELVIEW); +} + + +void DrawSquare(float width, float r, float g, float b, float z) { + width /= 2; + + glColor3f(r, g, b); + glBegin(GL_QUADS); // start drawing a polygon (4 sided) + glVertex3f(-width, width, z); // Top Left + glVertex3f( width, width, z); // Top Right + glVertex3f( width,-width, z); // Bottom Right + glVertex3f(-width,-width, z); // Bottom Left + glEnd(); // done with the polygon +} + +/* The main drawing function. */ +void DrawGLScene() +{ + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear The Screen And The Depth Buffer + glLoadIdentity(); // Reset The View + + + //FIRST DRAW - red quad + glTranslated(-1 ,0, -5); + for (int i = 0; i < 5; i++) { + glTranslated(0.5, 0, 0); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable(GL_BLEND); + draw_textured_quad(&t); + glDisable(GL_BLEND); + } + + + glLoadIdentity(); + glTranslated(-1 , -1, -5); + glDepthFunc(GL_LESS); + glEnable(GL_DEPTH_FUNC); + + for (int i = 0; i < 5; i++) { + glTranslated(0.5, 0, +0.2); + + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable(GL_BLEND); + draw_textured_quad(&t); + + glDisable(GL_BLEND); + } + + glDisable(GL_DEPTH_TEST); + + + /* + glTranslated(0, 0, -10); + //DepthTest! + glTranslated(0, 0, 0); + glDepthFunc(GL_LESS); + glEnable(GL_DEPTH_TEST); + draw_textured_quad(&t); + glDisable(GL_DEPTH_TEST); + + //Hum... wait what? + glTranslated(1, 0, -0.5); + glDepthFunc(GL_LESS); + glEnable(GL_DEPTH_TEST); + draw_textured_quad(&t); + glDisable(GL_DEPTH_TEST); + + + //I don,t get anything anymore + glTranslated(-1, 0, -0.5); + glDepthFunc(GL_LESS); + glEnable(GL_DEPTH_TEST); + draw_textured_quad(&t); + glDisable(GL_DEPTH_TEST); + */ + + // swap buffers to display, since we're double buffered. + glKosSwapBuffers(); +} + +int main(int argc, char **argv) +{ + glKosInit(); + InitGL(640, 480); + dtex_to_gl_texture(&t, "/rd/disk_1555.dtex"); + ReSizeGLScene(640, 480); + DrawGLScene(); + while(1) { + DrawGLScene(); + } + + return 0; +} diff --git a/samples/depth_funcs_alpha_testing/romdisk/convertToDtex.sh b/samples/depth_funcs_alpha_testing/romdisk/convertToDtex.sh new file mode 100755 index 0000000..9443d16 --- /dev/null +++ b/samples/depth_funcs_alpha_testing/romdisk/convertToDtex.sh @@ -0,0 +1,17 @@ +#! /bin/sh + +FILE=$1 +FILE_FLIP="$1_flip.png" +FILE_PATH=${FILE%/*} + +echo $FILE_PATH + +convert $FILE -flip $FILE_FLIP + +$KOS_BASE/utils/texconv/texconv --in $FILE_FLIP --format ARGB1555 --preview $FILE_PATH/preview_1555.png --out $FILE_PATH/disk_1555.dtex +$KOS_BASE/utils/texconv/texconv --in $FILE_FLIP --format RGB565 --preview $FILE_PATH/preview_565.png --out $FILE_PATH/disk_565.dtex +$KOS_BASE/utils/texconv/texconv --in $FILE_FLIP --format ARGB4444 --preview $FILE_PATH/preview_4444.png --out $FILE_PATH/disk_4444.dtex + +rm $FILE_FLIP + +#rm $FILE_FLIP diff --git a/samples/depth_funcs_alpha_testing/romdisk/disk.png b/samples/depth_funcs_alpha_testing/romdisk/disk.png new file mode 100644 index 0000000000000000000000000000000000000000..a5d83c13d6d4bcf0b67f3ac2742a6228c95171d5 GIT binary patch literal 4847 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 V`8HjW@m>G`002ovPDHLkV1iJCAs_$% literal 0 HcmV?d00001 diff --git a/samples/depth_funcs_alpha_testing/romdisk/disk_1555.dtex b/samples/depth_funcs_alpha_testing/romdisk/disk_1555.dtex new file mode 100644 index 0000000000000000000000000000000000000000..1502c1d444666bc36c312afc923be67d9bbd8de7 GIT binary patch literal 8208 zcmeI1zfL1b5XN~4OtQ$g@8HY`Z*cbpAe~rQ^BRzNLL^3VUVujk)u zfvorT*rPq`Wxf02zSt^)ZWY~mcRs#*yZ?`E)uXFY5ZUN9PBvw)=RZ zWnb3n&Rx&GGP$kS;}Ew{5gBXioOQXuQ~7BjPKGbv*NWZ zS=yaasueiA*v$5hXZ`i(tnukvA)od3?YmK5MHwS+$VGi$t8XhmO|N5q@`q{6FTFXt zU}YQGk=FEJAm2GYyJ%!z`t9M-;KLAElfTvqPf{ya>n-^M@4=ur)tgu9Ira2f_AuMv zMUBjTvynZV1|l@+2l-Z%Il?C}S>87kY2?wc8gXS!g(~ zeT6yJAJ>-FzRlNo<4LxYQL^ndm3X$DSC&2|A3Gn7x19u~B(C^Dy{)V{UwuplxtC8< zyrw0#}0ut_BT0Xw;nV3RMhIghkq;6YZW7 zcY_A51`WRGO)ERR2>z_!$PNZa15OqYjxkf_WC01_QDz?1`7Gq!ej0<&OncbSBfZ`e zI?Vc;+Q)qFQs+^3&Z*?%@6IKEC25Uc=r~Cx>)Pr6B)7iz*c$Y<$~c35zHZ$)9v=L< z?Y>8Uz3+S19e1Db^#z(e;jhqroWDdyun!Ci8t4|dM$4kz%iiX{2Rd1b)AsP;Wbc?0 zZfxhkIN#AJ0y3XnTuvH_Yw%foIv+fow1@cs-`-Rd#drN#ATi&JhZE~o+Gc(9Kb(Yq zbkJt_8t4kGASu`xxXfr1Udb5B8hR(AI=+IetdXOvX)p|?pZE11Q4d=%UdA2uD91dQ zgT{Uu^>aI=zUE0euIR^!5~m8hg}j}{mAbcp4WI#$7Ex&6L*NDoUBzj98d-dpw!oRd zAJzn0gGg$dpc7r}2O=Qhrtl3say{?u&oQob^&Sm2g~PMHqAcNMI&BZX^gk%FY8|_O zrPod2eCK9&iG7H?JgP#2M^=SJRg1cC-y$=Q(st*nD@v1H%1EuWudL}0mc>p{Uqz9v z%Gc|w`mfs_@oLD|>%o7Gn!IKf?H)^KkGm1SnpJA?t1MTKS8MfC`jZpLs+MUHOA}Lf zgcqzFu`)3;u`)3;8i}cih>59VJgX^d^8Uz8enZYeu0qb@c4BX^N3>T!JAj`d64DOMy_P`A!%Pj~F-gs(niT%Fsd1#G0^PWa5|dK5`{;rqE9= zMNUO7MNSoV2pZp^?siH_TLle%NFcR%$Y02*;JlSnsa+>+k%zzh{dD=>iaRUc4_(E> zE*Jdu$Gu$t`u+c#l8JH{yU8l?v#UEOZc_p`0%y2a;?7FG4gM&Hke};bC2)p&G49C1 zN`9B7J!?2-cq4op-yuU=$a8bhkZ$g($c^kSOLtn_W$B!p20v)%{M`^K-_S$?nnb>zWSN7?7t`n)E@ zti;BFq{svx8n|lG!dP!L?nuA9{OSR}gx1@+BmVef6LX*z1-e0eaM+Mb@xEdL@srxoJzY__kQW59r09a$yxl=P8C&^wlQ?;2|VV~!_uqpwQLtY p*L%LtI{g@}>yHhe#YXtH=4f|T(1@0TzNT?i`)mDv@&6eX_zR2n1f>7~ literal 0 HcmV?d00001 diff --git a/samples/depth_funcs_alpha_testing/romdisk/disk_4444.dtex b/samples/depth_funcs_alpha_testing/romdisk/disk_4444.dtex new file mode 100644 index 0000000000000000000000000000000000000000..4f7d08a7adf0677ed374d98b09f23441fdeba946 GIT binary patch literal 8208 zcmeI1FLN775XJosbii13AY3Fo2Xe?j#Nf(gL5wY666Anjo0!Ta;2O3p&@jvf0%9Qo z`2v=Z^-Rx9?@Z6^n>X#(`@jG3+szm3h-kiQ$LNXP8y{#H3#xmx02^nI@pxab>ufve_h;ptB(1ycVDbbyDC=2ozkjU)5daE zI+EsSb+o#kmCH}J*R!h`{rLptbCluV={X8PC;hIKP-*NnS{X zK4j=aw*B+>mD4MHUB6E&Gh)3`Ur9dSlh?bJ@DRSmGwfON;onqfEywOf>Y`t#>aW%A z&b`S>xZlYYT7jW__UZO&R=sRb^D~5kq*>>`7zFz zpOy0dVRc#A8?7oUs=aetE^lV#>~ubypUr9Oy_r{G`DU5@K)RTpXg8cJ8s!CL^N0C{ zU34?^y?LV^<-DAq&hZgDs#Nb&vvH>1cZ-w7z@Dhb{+aajAs_YLYVg^f$zUSs>El38 z@xiSPWN*`hwzT1Q68ey#-^hvC!IrG$=d$qUyg2u_NFVjoyw{T@V?LSNDD92!G%J$5 z-9{h_6SI9OE0>HJsYljjpO)TQ?bLQtF05>AX@9PFlE{1cSY;9qBYLmWvHg;JQydnD z{e9Dsr|ylO{bIlWy8n73kFD;|wbCm`E46uP>80e${)_zkLb+W_yZznA_UiZO16TF6 z7>c%S30((V%2@Y}${^e`9^WLNi%6^e9%JgbsZ1==km3cV(}4 z@8c&gLaA&uI_$_q1-bNJZ80b?Zt~>)XA*#eTc*bC&~GLvC=j zjlV*7L&mH()SKwnP`vmM(vY!%uR=jXOt9SYft(pdFLbh;=*+m%Y0L@7Ngxbeoaqz+ znakzT>PGvSJGvC44V2Beno;%zNNspc4<)rXWOkI+`}{P(fB0vjv%pUlX{ZZ7 zGY9!*9`nkl)Iy^;x0LPZEq}GE)%od&@`KhJz- z=aRu!!ya6gH%ED!gex<%Xy;ryP2DTT(#=!ta+|NV%Eo`;{pMwHX1Fvf6?_`53}=Qb z!Jp10tR!<~h@3Zu5wEciA!v-wu^g=q)DvzZI`9_GgG z1HIqxssmN>&o?Jr+1ZsJF) za>-rk!p_bw?Q@snP9>jQ$`|+t(T6;3h^a+;VpT*Nh*fbn zYR0m3R<1)IlJ5$ANFNV~$hbI>ef&u7ZlMnu`j9c+ZSu#&D&@JU`LAbp;z7-`VmzjA z#4JPqoYHXBqXNVSB31yS@MHLj008hnfjR6ZubICdGm-uQi3**YpuZ=GUE(_H_ zJm;#%hJAjrwD_zL4%7u}9eG>jY$c=d7O7o^E5n%;kzB%=`HF}7qWMaP zidiB*38+a6kA f&*CHYsC;CxETpq6oljflysiG>8-Hs4O&<6YSw5DE literal 0 HcmV?d00001 diff --git a/samples/depth_funcs_alpha_testing/romdisk/disk_565.dtex b/samples/depth_funcs_alpha_testing/romdisk/disk_565.dtex new file mode 100644 index 0000000000000000000000000000000000000000..5357c9d8ce4f84ededed27392ce3d656bbb535eb GIT binary patch literal 8208 zcmeI1zfL1b5XK2FBJ&6WYc4R6ojE|lE6obsy#YuoEifQ^8%tSsO6>zcx578avr@9#2dS9f)Fb$3nA*Hy)Dd%u5pzxIAjf4{8#y0$j| z`S&ljKz;V@#e08!R-fH|x&5+z?{xeAa(X$N_s$cfQl*et7e_ z_nh5hBWs=A-+r++yi9hZbVlLCxLLGiel_gF9ri;%oT&7}2$@)mt;0bW9S#l$?PO#B zbiI=Fs*FF9#%<9|G`-LW$#xhi>U^ip&x`&r3Ktvu?Ic`;i+0jZ(0NxI*Lu}nbx<4B zobS~6PM7!p*VfI}i#g5G*q_2#J(H~|SO(i-5zZ`iw=a_Q8CJA+;N!AsXOv%slW4`R zELqr{TIe4RrhAp-biG$y%>Po&*JpCfNqK3M_m}0peWth1+S7~B&5QjV(JIbQ7;WtH zW|QPj?{r+#*;(J%Pm&MST?5%D-_;xLhge^3x064rlyPlVAJ=Z0i}p>EcIe6; z(Kei-B(bxZB-fSAt8HLe{u&~c#O^X5%6Z|1G6g$=JOoVZ#2pmE-0 z40ZLl@@8g5a`vR6R#MTlHQzC9dFw_RUCJpE@TKX2(g)uub@WgcPuQ_%BL3GslZW1* z`OllPdLH$m^Rs3eTt5Q8qmiszgK)7U>)9>+30S*Qw*GQ|F70+R1d!`MqkAjB9r_ zZWa)ZHB;~CW&sJ{am%oe<^3$=&3;;g&`jTOH?FIDDs<>oEBcO^?{JV`T~4``Z2gy0 z$)8AC>lZrqhy7LU^na3D{q)#7*w%Zq_cWi|d%K)+ww+(L-D~uh$G&yjaQ6XU3*<{9 zrh#9Mzo2{GbY!&tEaF_+0uc@CK)2;*5_=Z?Y0G=z1(mUGmRbF{aa}oG=Z4GUJ&-pK zbc=w@8~cZYM1BotmNUJ%bzM1bY;JM3EApaz4R+IH5wTf~@v{~;)@Nz!RndQ4asB9^ zFXF2Z)T!etNNV^>&m``OU(l95<4$%K*xHFW3$pT#3}wM!)58eH!ZB_{ZCSwVVD`g4 zwE0b2^sx_~bL}CQJyO*v+*DcXQ*$C&3bOoqn>q!(JZ7J~Xqg7IfDNG!-hgl0_l^&a z8=Tc;oaRg;3!maR`ugZZmw9RRS!WdSO?YH_-ugWIx>nVDSE~qzdsTT^ z!pm@R-1ty^C(o+AZs#j>Q{jAPbo7LM@Vv~c8rRIrYA5DZE!x8U=$V<9b~II6URvmT zyKG4hLS#CT3Ia-#-Z|4L(_^;6_CI3~HbAPojUzOr*d{_KT z#uF3Bsxi{Sm&T{=2rqbZ_{#Xq_{#XqXvC++m&T`lZoOagUwg8?*6k zVjk;4N?~j#A}4r?zskO>ZU~x3w9P?PY0__@$JWKKJ?Jq_Mu(E8$0=usm<2zcn1)ye zTOVi-^!dJg-R#MH{#3QBRh+K`9mGt$6W$k*_~BqU^iHXOT0@bx+&+$)ypy(Vve% zJEP8b>g#=p`hH%Ldu_klkL>JIb2#7WYxS=p53U-@I;uMDL|+xe6^2HPr3RkriAd@# zr;e*ggR?G6{qeIvHTa?MSE*5G^MG5+*tKZqLb$wzq{||`TzA=2lK9GgQ_;$GQ{hwl zY&NHjX52i^K7UxtLNBw>|5!UM^zv9tRmNZM%`K)#>`LJll2RIsEr$o{M+Uhu@o^CV~Ck5$~_P>5lcaxFDZohPX z%kocuMbB%&hQus(Yll8IinbxQ6Opc?j6S(#Q1SK)dtmL%%Usw{&&g2URNP-TSN@;O z4G3o$Y{t3wSYDs=pI_mR?QvXn>bUCE`J6cNO3vp$7&;4a_lukumNMLRigk*9WvF=X z-cR29?4CRrIV-n&VS8-K%@ofl_9a(E&dTk~8(};$_TL!e7?)edEbVQ#dl_RLSDluv s?R+0!?*HC)c|G5&@3rGOv)G6;${wA%x8(FWy)X4YH|{6@pJ9PN0rkatKL7v# literal 0 HcmV?d00001 diff --git a/samples/depth_funcs_alpha_testing/romdisk/preview_1555.png b/samples/depth_funcs_alpha_testing/romdisk/preview_1555.png new file mode 100644 index 0000000000000000000000000000000000000000..d5d0c07bbedc459182ee112ffce30fc89070e050 GIT binary patch literal 1778 zcmVHXND#g3Sy8ej5{X1cjzq2;IdbL7`3X<1Tsd;& zN@Qdt5{X2%ESDA4UqCk>33+*YX6hUU5(xCYb*sAR>dBZHU)g?pb_1Sm-vm6n0nfH? z0-oJ~XWQ>To3_#UEhzQAe01?L!@cA|eu9XAL z1PlsL02lxTduz581V97GwP1H-C_N|Q^&`8t>Gu&3di`=50q+U{P4Ga&?cH=E{CY$b^<=%fUdlTUT<@Su8@yY&{}CUrw-?`U%c&0SD?O>P+E=17!fhd)NnHi zw-I2$PrTliaL5S&2cQ`Mu>$F34X|P`X%IXaWXO;ULreq#qLjZ`u zcAslQh{lhPIfp>yD`Kbw&nm`vC~p=v9e6Rxl$$wLXSU7c2dR_IOwz=9XAE2usP4GLtg zBM!k&?#TfUZ22HLCIT}F5v-vYU?!XkjdR&JHE5C^r|RT+=t^np#x8PO2t=fRt^_Q4mKo? zrz0Ul0%>w#1#{d~Jy=PX2@?voohB3xARzR9Dcv35<6b` z^r2NU%g?@(Ed$KP$dY74!T}4RuvZ1!k{}cMeC&PFG?)HD!vlaBfGm7hFlNb!Jb(Og z77AL85@MfY^V~z4fKdKS?tTQ|TpI5)jR!f222X)c!B5^2y&@LwN#@x$B+g~;?!jdK zYzTup=LE?OVv^>;dyt9i?P$=P&cL`Xjhkg&VdE@Q!j?i{>jdW568*a)YD3by4^q^U zSdN(%r^Kvstz|TIjYa1(#m#%R4Bo59?5%mTFCJ!qH-_W`(!AeWff;5DD0BPrahSUokK`ZhHwuQh<1q@NakB?d;xD*N&$eyg7xPB)6+}8_%{oV(*5D-y; zO^7}e*o6YSD$WA1wJq{H>-mxNFNH6b@_z4cBS6fnV9=;KxH7ebg2++4BKv4gxWSm< z6Rx?plYT4G*O*j^H+mn~Qy#a)(aQ-qzu>b5SosRkv?LxDM-iJfUb8^%PFcC^K|Csz zlLlTJ05501bY^35bo)T)^&@j6D2=lB<#C%28e1MGhO%9eDUZXI%Muf*ZalyaJSGKE z&Nb>wfx0c%r2l~OxLAg=yF#0KJUj`|3V$>w)Rz+PZw)lDs9<23?hO`5q)hmc-ekN$ zLcIR>Ki=!wTzaeY9iWFTk+Ev9Ma_ej$XM{tSt64lAzUQIe4o_MnWo>1d95C+L?p-FwFd^Rm3d`iItt^xbiLm>%o^cAA@vAPB4DE)cvN5yg zthaytrLv)Y>BZ8aec9#mQ~R?2FcGsa`7bm76Z`W2HTF%wvm5Yi`zGMo4S2Tw2Y%Di U*Z9OqbN~PV07*qoM6N<$f`iR1XaE2J literal 0 HcmV?d00001 diff --git a/samples/depth_funcs_alpha_testing/romdisk/preview_4444.png b/samples/depth_funcs_alpha_testing/romdisk/preview_4444.png new file mode 100644 index 0000000000000000000000000000000000000000..d328267ea5750f1433bbb17f716974c85f8d21fa GIT binary patch literal 1776 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 literal 0 HcmV?d00001 diff --git a/samples/depth_funcs_alpha_testing/romdisk/spritesheet.dtex b/samples/depth_funcs_alpha_testing/romdisk/spritesheet.dtex new file mode 100644 index 0000000000000000000000000000000000000000..b4b0759a93ab56018613177bcf750438d1d0aa74 GIT binary patch literal 524304 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 literal 0 HcmV?d00001 From f128efad6b5a8b228ae3acc912d308a26b57ffeb Mon Sep 17 00:00:00 2001 From: lerabot Date: Thu, 21 Mar 2019 12:16:54 -0400 Subject: [PATCH 2/4] Added comments --- samples/depth_funcs_alpha_testing/gl_png.c | 12 ----- samples/depth_funcs_alpha_testing/main.c | 54 +++------------------- 2 files changed, 7 insertions(+), 59 deletions(-) diff --git a/samples/depth_funcs_alpha_testing/gl_png.c b/samples/depth_funcs_alpha_testing/gl_png.c index 2ed3cdb..05dedc4 100644 --- a/samples/depth_funcs_alpha_testing/gl_png.c +++ b/samples/depth_funcs_alpha_testing/gl_png.c @@ -217,18 +217,6 @@ void draw_textured_quad(texture *tex) { 0.0, 0.0, 1.0 }; - /* - glBindTexture(GL_TEXTURE_2D, tex->id); // choose the texture to use. - - glBegin(GL_QUADS); // begin drawing a cube - // Front Face (note that the texture's corners have to match the quad's corners) - glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 0.0f); // Bottom Left Of The Texture and Quad - glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 0.0f); // Bottom Right Of The Texture and Quad - glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 0.0f); // Top Right Of The Texture and Quad - glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 0.0f); // Top Left Of The Texture and Quad - glEnd(); - */ - glEnable(GL_TEXTURE_2D); glBindTexture(GL_TEXTURE_2D, tex->id); glEnableClientState(GL_VERTEX_ARRAY); diff --git a/samples/depth_funcs_alpha_testing/main.c b/samples/depth_funcs_alpha_testing/main.c index 9c9bce6..f6bb1eb 100644 --- a/samples/depth_funcs_alpha_testing/main.c +++ b/samples/depth_funcs_alpha_testing/main.c @@ -1,4 +1,3 @@ - #include "gl.h" #include "glu.h" #include "glkos.h" @@ -16,7 +15,6 @@ float xrot, yrot, zrot; /* A general OpenGL initialization function. Sets all of the initial parameters. */ void InitGL(int Width, int Height) // We call this right after our OpenGL window is created. { - glClearColor(0.0f, 0.0f, 0.0f, 0.0f); // This Will Clear The Background Color To Black glClearDepth(1.0); // Enables Clearing Of The Depth Buffer glShadeModel(GL_SMOOTH); // Enables Smooth Color Shading @@ -26,20 +24,6 @@ void InitGL(int Width, int Height) // We call this right after our OpenG gluPerspective(45.0f,(GLfloat)Width/(GLfloat)Height,0.1f,100.0f); // Calculate The Aspect Ratio Of The Window glEnable(GL_TEXTURE_2D); glMatrixMode(GL_MODELVIEW); - - /* - //FROM REAPERI CYCLE - GLfloat modelAmbient[4] = {0.8, 0.8, 0.8, 1.0}; - GLfloat ambient[4] = {0.2, 0.2, 0.2, 1.0}; - GLfloat diffuse[4] = {1.0, 1.0, 1.0, 1.0}; - GLfloat specular[4] = {0.0, 0.0, 0.0, 1.0}; - glEnable(GL_LIGHTING); - glEnable(GL_LIGHT0); - glLightfv(GL_LIGHT0, GL_AMBIENT, modelAmbient); - glLightfv(GL_LIGHT0, GL_DIFFUSE, diffuse); - glLightfv(GL_LIGHT0, GL_SPECULAR, specular); - //glDisable(GL_COLOR_MATERIAL); - */ } /* The function called when our window is resized (which shouldn't happen, because we're fullscreen) */ @@ -77,7 +61,7 @@ void DrawGLScene() glLoadIdentity(); // Reset The View - //FIRST DRAW - red quad + //First Batch is alpha blending glTranslated(-1 ,0, -5); for (int i = 0; i < 5; i++) { glTranslated(0.5, 0, 0); @@ -88,49 +72,23 @@ void DrawGLScene() } + //Second batch is depth testing + //Changing the translate Z value doesn't change anything? glLoadIdentity(); glTranslated(-1 , -1, -5); glDepthFunc(GL_LESS); glEnable(GL_DEPTH_FUNC); for (int i = 0; i < 5; i++) { - glTranslated(0.5, 0, +0.2); - + glTranslated(0.5, 0, -0.2); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable(GL_BLEND); draw_textured_quad(&t); - glDisable(GL_BLEND); } - + glDisable(GL_DEPTH_TEST); - - /* - glTranslated(0, 0, -10); - //DepthTest! - glTranslated(0, 0, 0); - glDepthFunc(GL_LESS); - glEnable(GL_DEPTH_TEST); - draw_textured_quad(&t); - glDisable(GL_DEPTH_TEST); - - //Hum... wait what? - glTranslated(1, 0, -0.5); - glDepthFunc(GL_LESS); - glEnable(GL_DEPTH_TEST); - draw_textured_quad(&t); - glDisable(GL_DEPTH_TEST); - - - //I don,t get anything anymore - glTranslated(-1, 0, -0.5); - glDepthFunc(GL_LESS); - glEnable(GL_DEPTH_TEST); - draw_textured_quad(&t); - glDisable(GL_DEPTH_TEST); - */ - // swap buffers to display, since we're double buffered. glKosSwapBuffers(); } @@ -139,6 +97,8 @@ int main(int argc, char **argv) { glKosInit(); InitGL(640, 480); + + //loads a dtex texture. see the /romdisk folder for more files dtex_to_gl_texture(&t, "/rd/disk_1555.dtex"); ReSizeGLScene(640, 480); DrawGLScene(); From 84f9711489c7e6f644f17bdc1c398fb2403ebcd3 Mon Sep 17 00:00:00 2001 From: lerabot Date: Wed, 13 May 2020 10:16:29 -0400 Subject: [PATCH 3/4] Updated the blend samples --- samples/blend_test/main.c | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/samples/blend_test/main.c b/samples/blend_test/main.c index 4fcad50..65e58ec 100644 --- a/samples/blend_test/main.c +++ b/samples/blend_test/main.c @@ -63,23 +63,29 @@ void DrawGLScene() glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear The Screen And The Depth Buffer glLoadIdentity(); // Reset The View - glTranslatef(0, 0, -10.0f); // Move Left 1.5 Units And Into The Screen 6.0 - - glPushMatrix(); glTranslatef(-4.0, 0, -10); - DrawQuad(RED); - glPopMatrix(); - glTranslatef(4.0, 0, 0); + // LEFT SECTION + // This should draw 2 quad, a red first, then and overlapping blue one. + // This section draw both quad at the same Z value glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - - /* Draw 3 overlapping quads, 2 of which should be totally transparent so the - * output should be the third */ - DrawQuad(NONE); - DrawQuad(NONE); + DrawQuad(RED); + glTranslatef(1.0, 0, 0); DrawQuad(BLUE); + glDisable(GL_BLEND); + glTranslatef(4.0, 0, 0); + + // RIGHT SECTION + // This should draw 2 quad, a red first, then and overlapping blue one. + // This section uses a LOWER Z VALUE(-0.01f), so the blue quad should be in FRONT of the red quad. + // lerabot's note : changing the z value to positive gives the desired output. + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + DrawQuad(RED); + glTranslatef(1.0, 0, -0.01); + DrawQuad(BLUE); glDisable(GL_BLEND); glKosSwapBuffers(); From 4e47b30b0ae98337f012f2ec030d8f476d4b7755 Mon Sep 17 00:00:00 2001 From: lerabot Date: Wed, 13 May 2020 10:34:18 -0400 Subject: [PATCH 4/4] added a new depth/alpha testing sample --- samples/lerabot_blend_test/Makefile | 29 +++++ samples/lerabot_blend_test/main.c | 106 ++++++++++++++++++ .../lerabot_blend_test/romdisk/PLACEHOLDER | 0 3 files changed, 135 insertions(+) create mode 100644 samples/lerabot_blend_test/Makefile create mode 100644 samples/lerabot_blend_test/main.c create mode 100644 samples/lerabot_blend_test/romdisk/PLACEHOLDER diff --git a/samples/lerabot_blend_test/Makefile b/samples/lerabot_blend_test/Makefile new file mode 100644 index 0000000..cfff063 --- /dev/null +++ b/samples/lerabot_blend_test/Makefile @@ -0,0 +1,29 @@ +TARGET = blend_test.elf +OBJS = main.o + +all: rm-elf $(TARGET) + +include $(KOS_BASE)/Makefile.rules + +clean: + -rm -f $(TARGET) $(OBJS) romdisk.* + +rm-elf: + -rm -f $(TARGET) romdisk.* + +$(TARGET): $(OBJS) romdisk.o + $(KOS_CC) $(KOS_CFLAGS) $(KOS_LDFLAGS) -o $(TARGET) $(KOS_START) \ + $(OBJS) romdisk.o $(OBJEXTRA) -lm -lkosutils $(KOS_LIBS) + +romdisk.img: + $(KOS_GENROMFS) -f romdisk.img -d romdisk -v + +romdisk.o: romdisk.img + $(KOS_BASE)/utils/bin2o/bin2o romdisk.img romdisk romdisk.o + +run: $(TARGET) + $(KOS_LOADER) $(TARGET) + +dist: + rm -f $(OBJS) romdisk.o romdisk.img + $(KOS_STRIP) $(TARGET) diff --git a/samples/lerabot_blend_test/main.c b/samples/lerabot_blend_test/main.c new file mode 100644 index 0000000..65e58ec --- /dev/null +++ b/samples/lerabot_blend_test/main.c @@ -0,0 +1,106 @@ +/* + * This sample is to demonstrate a bug where rendering an unblended + * polygon, before a series of blended ones would result in no blended + * output and incorrect depth testing + */ + +#include "gl.h" +#include "glu.h" +#include "glkos.h" + +/* A general OpenGL initialization function. Sets all of the initial parameters. */ +void InitGL(int Width, int Height) // We call this right after our OpenGL window is created. +{ + glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // This Will Clear The Background Color To Black + glClearDepth(1.0); // Enables Clearing Of The Depth Buffer + glDepthFunc(GL_LEQUAL); // The Type Of Depth Test To Do + glEnable(GL_DEPTH_TEST); // Enables Depth Testing + glEnable(GL_TEXTURE_2D); + glShadeModel(GL_SMOOTH); // Enables Smooth Color Shading + glDisable(GL_BLEND); + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); // Reset The Projection Matrix + + gluPerspective(45.0f,(GLfloat)Width/(GLfloat)Height,0.1f,100.0f); // Calculate The Aspect Ratio Of The Window + + glMatrixMode(GL_MODELVIEW); +} + +/* The function called when our window is resized (which shouldn't happen, because we're fullscreen) */ +void ReSizeGLScene(int Width, int Height) +{ + if (Height == 0) // Prevent A Divide By Zero If The Window Is Too Small + Height = 1; + + glViewport(0, 0, Width, Height); // Reset The Current Viewport And Perspective Transformation + + glMatrixMode(GL_PROJECTION); + glLoadIdentity(); + + gluPerspective(45.0f,(GLfloat)Width/(GLfloat)Height,0.1f,100.0f); + glMatrixMode(GL_MODELVIEW); +} + + +void DrawQuad(const float* colour) { + glBegin(GL_QUADS); + glColor4fv(colour); + glVertex3f(-1.0,-1.0, 0.0); + glVertex3f( 1.0,-1.0, 0.0); + glVertex3f( 1.0, 1.0, 0.0); + glVertex3f(-1.0, 1.0, 0.0); + glEnd(); +} + +/* The main drawing function. */ +void DrawGLScene() +{ + const float RED [] = {1.0, 0, 0, 0.5}; + const float BLUE [] = {0.0, 0, 1, 0.5}; + const float NONE [] = {0, 0, 0, 0}; + + glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Clear The Screen And The Depth Buffer + glLoadIdentity(); // Reset The View + + glTranslatef(-4.0, 0, -10); + + // LEFT SECTION + // This should draw 2 quad, a red first, then and overlapping blue one. + // This section draw both quad at the same Z value + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + DrawQuad(RED); + glTranslatef(1.0, 0, 0); + DrawQuad(BLUE); + glDisable(GL_BLEND); + + glTranslatef(4.0, 0, 0); + + // RIGHT SECTION + // This should draw 2 quad, a red first, then and overlapping blue one. + // This section uses a LOWER Z VALUE(-0.01f), so the blue quad should be in FRONT of the red quad. + // lerabot's note : changing the z value to positive gives the desired output. + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + DrawQuad(RED); + glTranslatef(1.0, 0, -0.01); + DrawQuad(BLUE); + glDisable(GL_BLEND); + + glKosSwapBuffers(); +} + +int main(int argc, char **argv) +{ + glKosInit(); + + InitGL(640, 480); + ReSizeGLScene(640, 480); + + while(1) { + DrawGLScene(); + } + + return 0; +} diff --git a/samples/lerabot_blend_test/romdisk/PLACEHOLDER b/samples/lerabot_blend_test/romdisk/PLACEHOLDER new file mode 100644 index 0000000..e69de29