I am giving up for the evening, I am sure that the blend mode is wrong or something because my quad is not textured..
As this is all part of a larger intro I thought it easier to post the whole thing..
Maybe someone can spot my stupid mistake?
The Xor texture should be on the grey quad.
Thanks to Rbraz (I converted and slightly adapted your C source).
'
' GLENZE VECTOR INTRO WITH OPENGL
' BY SCHLOCKWAVE
'===============================================================================
OPTION STATIC
OPTION EXPLICIT
#INCLUDE "GL/GL.BI"
#INCLUDE "GL/GLU.BI"
#INCLUDE "WINDOWS.BI"
DIM SHARED AS INTEGER MOUSE
'===============================================================================
' LOGO XOR TEXTURE GENERATION;
'===============================================================================
DIM SHARED AS UINTEGER LOGOBUFFER ( 256 * 256 )
DIM SHARED TEX1 AS GLUINT
DIM AS UINTEGER X,Y,PIXEL
for y = 0 TO 255
for x = 0 TO 255
PIXEL = X XOR Y
LOGOBUFFER((y * 256)+X) = RGBA(PIXEL,PIXEL,PIXEL,255)
NEXT
NEXT
glGenTextures 1, @tex1
glBindTexture(GL_TEXTURE_2D, tex1)
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_LINEAR)
gluBuild2DMipmaps (GL_TEXTURE_2D, 3, 256, 256,GL_RGBA, GL_UNSIGNED_BYTE, @LOGOBUFFER(0))
'===============================================================================
' OPEN A SCREEN 1024 * 768;
'===============================================================================
SCREEN 20,,,3
'===============================================================================
' SET UP OPENGL;
'===============================================================================
GLVIEWPORT 0, 0, 1024, 768 '' Reset The Current Viewport
GLMATRIXMODE GL_PROJECTION '' Select The Projection Matrix
GLLOADIDENTITY
GLUPERSPECTIVE 90.0, 1024/768, 0.1, 50. '' Calculate The Aspect Ratio Of The Window
GLMATRIXMODE GL_MODELVIEW '' Select The Modelview Matrix
GLLOADIDENTITY '' Reset The Modelview Matrix
GLSHADEMODEL GL_SMOOTH '' Enable Smooth Shading
GLCLEARCOLOR 0.0, 0.0, 0.0, 0.00 '' Black Background
GLCLEARDEPTH 1.0 '' Depth Buffer Setup
GLENABLE GL_DEPTH_TEST '' Enables Depth Testing
GLDEPTHFUNC GL_LEQUAL '' The Type Of Depth Testing To Do
GLHINT GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST '' Really Nice Perspective Calculations
dim shared LightAmbient(0 to 3) as single => {0.00, 0.00, 0.00,0.0} '' Ambient Light is 20% white
dim shared LightDiffuse(0 to 3) as single => {0.5, 0.5, 0.5,0.5} '' Diffuse Light is white
dim shared LightPosition(0 to 2) as single =>{0.0, 0.0, 15.0 } '' Position is somewhat in front of screen
dim shared Lightdiffuse2(0 to 3) as single => {1.0, 1.0, 1.0,0.02} '' Diffuse Light is white
dim shared LightPosition2(0 to 2) as single =>{0.0, 10.0, 10.0 } '' Position is somewhat in front of screen
glLightfv( GL_LIGHT1, GL_AMBIENT, @LightAmbient(0)) '' Load Light-Parameters Into GL_LIGHT1
glLightfv( GL_LIGHT1, GL_DIFFUSE, @LightDiffuse(0))
glLightfv( GL_LIGHT1, GL_POSITION, @LightPosition(0))
glLightfv( GL_LIGHT2, GL_DIFFUSE , @Lightdiffuse2(0))
glLightfv( GL_LIGHT2, GL_POSITION, @LightPosition2(0))
gllightf (GL_LIGHT2,GL_SPOT_CUTOFF,60.0)
glEnable(GL_LIGHT1)
glEnable(GL_LIGHT2)
GLSHADEMODEL (GL_SMOOTH)
GLENABLE (GL_LIGHTING)
'===============================================================================
' SUBROUTINES;
'===============================================================================
DECLARE SUB GLENZECUBE(BYVAL GRX AS SINGLE, BYVAL GRY AS SINGLE, BYVAL GRZ AS SINGLE , BYVAL GPX AS SINGLE, BYVAL GPY AS SINGLE, BYVAL GPZ AS SINGLE)
DECLARE SUB DRAWGLENZE()
DECLARE SUB CUBE(BYVAL GRX AS SINGLE, BYVAL GRY AS SINGLE, BYVAL GRZ AS SINGLE , BYVAL GPX AS SINGLE, BYVAL GPY AS SINGLE, BYVAL GPZ AS SINGLE)
DECLARE SUB DRAWCUBE()
DECLARE SUB CUBE_OBJECTS()
DECLARE SUB COPPERS()
DECLARE SUB LOGO_TEXTURE()
'===============================================================================
' SETUP;
'===============================================================================
' MATERIALS;
DIM SHARED FACE1(0 to 3) AS SINGLE => {1.0, 0.2, 0.0,0.45} :' RED GLENZE FACES
DIM SHARED FACE2(0 to 3) AS SINGLE => {1.5, 1.2, 0.9,0.45} :' WHITE GLENZE FACES
DIM SHARED FACE3(0 to 3) AS SINGLE => {0.7, 0.5, 0.3,1.0} :' WHITE MATERIAL
DIM SHARED FACE4(0 to 3) AS SINGLE => {1.0, 0.1, 0.0,0.45} :' PURPLE FACES
' ROTATIONS;
DIM SHARED XR AS SINGLE : ' X ROTATION
DIM SHARED YR AS SINGLE : ' Y ROTATION
DIM SHARED ZR AS SINGLE : ' Z ROTATION
' HIDE MOUSE POINTER;
MOUSE=SHOWCURSOR(0)
GLENABLE(GL_MULTISAMPLE)
GLENABLE(GL_BLEND)
GLBLENDFUNC(GL_ONE_MINUS_CONSTANT_ALPHA,GL_dst_ALPHA)
GLENABLE (GL_CULL_FACE)
GLENABLE (GL_FOG)
GLHINT(GL_FOG_HINT,GL_NICEST)
GLFOGF(GL_FOG_DENSITY,0.1)
GLFOGF(GL_FOG_START, 5.0)
GLFOGF(GL_FOG_END, 20.0)
GLFOGI(GL_FOG_MODE,GL_EXP2)
GLENABLE(GL_TEXTURE_2D)
'===============================================================================
DIM D AS INTEGER
'===============================================================================
' MAIN LOOP
'===============================================================================
WHILE((GETASYNCKEYSTATE(VK_ESCAPE)<> -32767) )
GLFLUSH()
GLCLEAR GL_COLOR_BUFFER_BIT OR GL_DEPTH_BUFFER_BIT
CUBE_OBJECTS()
LOGO_TEXTURE()
xr = xr + 0.03
yr = yr + 0.06
zr = zr + 0.07
FLIP
WEND
END
'===============================================================================
' DRAW THE "LOGO"
'===============================================================================
SUB LOGO_TEXTURE()
GLLOADIDENTITY
glTranslatef(0, -2, -6)
glEnable(GL_TEXTURE_2D)
glBindTexture(GL_TEXTURE_2D, tex1)
GLBEGIN GL_QUADS
glNormal3f 0.0f, 0.0f, 1.0f
glTexCoord2f 0.0f, 0.0f
glVertex3f -1.0f, -1.0f, 1.0f
glTexCoord2f 1.0f, 0.0f
glVertex3f 1.0f, -1.0f, 1.0f
glTexCoord2f 1.0f, 1.0f
glVertex3f 1.0f, 1.0f, 1.0f
glTexCoord2f 0.0f, 1.0f
glVertex3f -1.0f, 1.0f, 1.0f
GLEND
END SUB
SUB CUBE_OBJECTS()
DIM AS DOUBLE XXX,YYY,ZZZ,R2D,T
T=TIMER*33
R2D=(3.14/180)
DIM L AS INTEGER
CUBE (XR,0,ZR,0,0,-9)
FOR L=0 TO 359 STEP 40
XXX= 9*SIN((L+T)*R2D)
ZZZ=(9*COS((L+T)*R2D))-12
GLENZECUBE (XR,YR,ZR,XXX,YYY,ZZZ)
NEXT
END SUB
'===============================================================================
' CONTROL CODE TO CREATE A CUBE ANYWHERE AND AT ANY ROTATION
'===============================================================================
SUB CUBE(BYVAL GRX AS SINGLE, BYVAL GRY AS SINGLE, BYVAL GRZ AS SINGLE , BYVAL GPX AS SINGLE, BYVAL GPY AS SINGLE, BYVAL GPZ AS SINGLE)
GLLOADIDENTITY
glTranslatef(GPX, GPY, GPZ)
glRotatef(GRX, 1.0, 0.0, 0.0)
glRotatef(GRY, 0.0, 1.0, 0.0)
glRotatef(GRZ, 0.0, 0.0, 1.0)
GLCULLFACE(GL_BACK)
DRAWCUBE()
END SUB
'===============================================================================
' CONTROL CODE TO CREATE A GLENZE CUBE ANYWHERE AND AT ANY ROTATION
'===============================================================================
SUB GLENZECUBE(BYVAL GRX AS SINGLE, BYVAL GRY AS SINGLE, BYVAL GRZ AS SINGLE , BYVAL GPX AS SINGLE, BYVAL GPY AS SINGLE, BYVAL GPZ AS SINGLE)
GLLOADIDENTITY
glTranslatef(GPX, GPY, GPZ)
glRotatef(GRX, 1.0, 0.0, 0.0)
glRotatef(GRY, 0.0, 1.0, 0.0)
glRotatef(GRZ, 0.0, 0.0, 1.0)
GLCULLFACE(GL_FRONT)
DRAWGLENZE()
GLCULLFACE(GL_BACK)
DRAWGLENZE()
END SUB
SUB DRAWCUBE()
GLBEGIN GL_QUADS
GLMATERIALFV (GL_FRONT,GL_AMBIENT_AND_DIFFUSE,@FACE3(0))
GLMATERIALFV (GL_FRONT,GL_SPECULAR,@FACE3(0))
' TOP
GLNORMAL3F 0,0,1
GLVERTEX3F 1, 1, 1
GLVERTEX3F -1, 1, 1
GLVERTEX3F -1,-1, 1
GLVERTEX3F 1,-1, 1
' BOTTOM
GLNORMAL3F 0,0,-1
GLVERTEX3F -1, 1, -1
GLVERTEX3F 1, 1, -1
GLVERTEX3F 1,-1, -1
GLVERTEX3F -1,-1, -1
' LEFT
GLNORMAL3F -1,0,0
GLVERTEX3F -1,-1,1
GLVERTEX3F -1, 1,1
GLVERTEX3F -1, 1,-1
GLVERTEX3F -1,-1,-1
' RIGHT
GLNORMAL3F 1,0,0
GLVERTEX3F 1, 1,-1
GLVERTEX3F 1, 1,1
GLVERTEX3F 1,-1,1
GLVERTEX3F 1,-1,-1
' FRONT
GLNORMAL3F 0,-1, 0
GLVERTEX3F -1,-1,-1
GLVERTEX3F 1,-1,-1
GLVERTEX3F 1,-1, 1
GLVERTEX3F -1,-1, 1
' BACK
GLNORMAL3F 0, 1, 0
GLVERTEX3F 1, 1, 1
GLVERTEX3F 1, 1,-1
GLVERTEX3F -1, 1,-1
GLVERTEX3F -1, 1, 1
GLEND
END SUB
SUB DRAWGLENZE()
GLBEGIN GL_TRIANGLES
'---------------------------------------------------------------------------
' TOP FACE
'---------------------------------------------------------------------------
GLCOLOR3F 1.0,0.0,0.0
GLMATERIALFV (GL_FRONT,GL_AMBIENT_AND_DIFFUSE,@FACE1(0))
GLNORMAL3F 0,1,0
GLVERTEX3F 1, 1, 1
GLVERTEX3F 0, 1, 0
GLVERTEX3F -1, 1, 1
GLVERTEX3F 0, 1, 0
GLVERTEX3F 1, 1, -1
GLVERTEX3F -1, 1, -1
GLMATERIALFV (GL_FRONT,GL_AMBIENT_AND_DIFFUSE,@FACE2(0))
GLVERTEX3F -1,1,1
GLVERTEX3F 0,1,0
GLVERTEX3F -1,1,-1
GLVERTEX3F 0,1,0
GLVERTEX3F 1,1,1
GLVERTEX3F 1,1,-1
'---------------------------------------------------------------------------
' BOTTOM FACE
'---------------------------------------------------------------------------
GLMATERIALFV (GL_FRONT,GL_AMBIENT_AND_DIFFUSE,@FACE1(0))
GLNORMAL3F 0,-1,0
GLVERTEX3F 0, -1, 0
GLVERTEX3F 1, -1, 1
GLVERTEX3F -1, -1, 1
GLVERTEX3F 0, -1, 0
GLVERTEX3F -1, -1, -1
GLVERTEX3F 1, -1, -1
GLMATERIALFV (GL_FRONT,GL_AMBIENT_AND_DIFFUSE,@FACE2(0))
GLVERTEX3F -1,-1,1
GLVERTEX3F -1,-1,-1
GLVERTEX3F 0,-1,0
GLVERTEX3F 1,-1,1
GLVERTEX3F 0,-1,0
GLVERTEX3F 1,-1,-1
'---------------------------------------------------------------------------
' LEFT FACE
'---------------------------------------------------------------------------
GLMATERIALFV (GL_FRONT,GL_AMBIENT_AND_DIFFUSE,@FACE2(0))
GLNORMAL3F -1, 0,0
GLVERTEX3F -1,-1, 1
GLVERTEX3F -1, 1, 1
GLVERTEX3F -1, 0, 0
GLVERTEX3F -1,-1,-1
GLVERTEX3F -1, 0, 0
GLVERTEX3F -1, 1,-1
GLMATERIALFV (GL_FRONT,GL_AMBIENT_AND_DIFFUSE,@FACE1(0))
GLVERTEX3F -1, 0, 0
GLVERTEX3F -1, 1, 1
GLVERTEX3F -1, 1,-1
GLVERTEX3F -1, -1,-1
GLVERTEX3F -1, -1, 1
GLVERTEX3F -1, 0, 0
'---------------------------------------------------------------------------
' RIGHT FACE
'---------------------------------------------------------------------------
GLMATERIALFV (GL_FRONT,GL_AMBIENT_AND_DIFFUSE,@FACE2(0))
GLNORMAL3F 1 ,0,0
GLVERTEX3F 1, 0, 0
GLVERTEX3F 1, 1, 1
GLVERTEX3F 1,-1, 1
GLVERTEX3F 1, 1,-1
GLVERTEX3F 1, 0, 0
GLVERTEX3F 1,-1,-1
GLMATERIALFV (GL_FRONT,GL_AMBIENT_AND_DIFFUSE,@FACE1(0))
GLVERTEX3F 1, 1,-1
GLVERTEX3F 1, 1, 1
GLVERTEX3F 1, 0, 0
GLVERTEX3F 1, 0, 0
GLVERTEX3F 1, -1, 1
GLVERTEX3F 1, -1,-1
'---------------------------------------------------------------------------
' FRONT FACE
'---------------------------------------------------------------------------
GLMATERIALFV (GL_FRONT,GL_AMBIENT_AND_DIFFUSE,@FACE1(0))
GLNORMAL3F 0,0,1
GLVERTEX3F -1,-1, 1
GLVERTEX3F 0, 0, 1
GLVERTEX3F -1, 1, 1
GLVERTEX3F 0, 0, 1
GLVERTEX3F 1,-1, 1
GLVERTEX3F 1, 1, 1
GLMATERIALFV (GL_FRONT,GL_AMBIENT_AND_DIFFUSE,@FACE2(0))
GLVERTEX3F -1,-1, 1
GLVERTEX3F 1,-1, 1
GLVERTEX3F 0, 0, 1
GLVERTEX3F 0, 0, 1
GLVERTEX3F 1, 1, 1
GLVERTEX3F -1, 1, 1
'---------------------------------------------------------------------------
' BACK FACE
'---------------------------------------------------------------------------
GLMATERIALFV (GL_FRONT,GL_AMBIENT_AND_DIFFUSE,@FACE1(0))
GLNORMAL3F 0, 0, -1
GLVERTEX3F 0, 0, -1
GLVERTEX3F -1,-1, -1
GLVERTEX3F -1, 1, -1
GLVERTEX3F 1,-1, -1
GLVERTEX3F 0, 0, -1
GLVERTEX3F 1, 1, -1
GLMATERIALFV (GL_FRONT,GL_AMBIENT_AND_DIFFUSE,@FACE2(0))
GLVERTEX3F 1,-1, -1
GLVERTEX3F -1,-1, -1
GLVERTEX3F 0, 0, -1
GLVERTEX3F 1, 1, -1
GLVERTEX3F 0, 0, -1
GLVERTEX3F -1, 1, -1
GLEND
END SUB