Super-simple OpenGL setup...no triangle visible?
BlitzMax Forums/OpenGL Module/Super-simple OpenGL setup...no triangle visible?| 
 | ||
| I can't figure out why there is no triangle visible here.  I believe I did everything I need to set it up properly. I need to set up the whole OpenGL environment myself, so I can access all the features I want. Any help pointing out an error in this code would be appreciated: This BlitzPlus code works: This BlitzMax code does not work: | 
| 
 | ||
| If I use a PollEvent() instead of a WaitEvent() in the BlitzMax source the triangle shows up, though it is badly distorted.  I don't think the pixel format is getting set up correctly. | 
| 
 | ||
| I replaced the bank with a PIXELFORMATDESCRIPTOR structure.  The screen still flashes badly, looking like the pixelformat is not getting set correctly. | 
| 
 | ||
| Okay, I had to get rid of the OR statements in the dwflags parameter.  Here it is, a super-simple OpenGL setup on a BlitzMax window.  That's pretty nice that it is so simple, even when you are creating a context from scratch: 'Create Window
win:tgadget=CreateWindow("OpenGL Window",200,200,640,480,Null,3)
'Setup pixel format
hwnd=QueryGadget(win,QUERY_HWND_CLIENT)
hdc=GetDC(hwnd)
Local lpPixelFormat:PIXELFORMATDESCRIPTOR
lpPixelFormat.nSize=40
lpPixelFormat.nVersion=1
lpPixelFormat.dwFlags=PFD_SUPPORT_OPENGL+PFD_DOUBLEBUFFER+PFD_DRAW_TO_WINDOW
lpPixelFormat.iPixelType=PFD_TYPE_RGBA
lpPixelFormat.cColorBits=16
lpPixelFormat.cRedBits=8
lpPixelFormat.cGreenBits=8
lpPixelFormat.cBlueBits=8
lpPixelFormat.cAccumBits=16
lpPixelFormat.cDepthBits=16
lpPixelFormat.cStencilBits=8
lpPixelFormat.dwLayerMask=PFD_MAIN_PLANE
lPixelFormat=ChoosePixelFormat(hDC,lpPixelFormat)
If Not lPixelFormat RuntimeError "ChoosePixelFormat() failed"
result=SetPixelFormat(hDC,lPixelFormat,lpPixelFormat)
If Not result RuntimeError "SetPixelFormat() failed"
lpPixelFormat=Null
'Create OpenGL Context
hrc=wglCreateContext(hdc)
If Not hrc Notify "Failed to create context."
wglMakeCurrent hdc,hrc
'Program Loop
Repeat
	
	'Setup Viewport
	w=ClientWidth(win)
	h=ClientHeight(win)
	glViewport 0.0,0.0,w,h
	glClearColor 0.0,0.0,1.0,0.0
	glClear GL_DEPTH_BUFFER_BIT+GL_COLOR_BUFFER_BIT
	glMatrixMode GL_PROJECTION
	glLoadIdentity()
	glPushMatrix()
	gluPerspective 45.0,Float(w)/Float(h),1.0,100.0
	'Draw Triangle
	glBegin GL_TRIANGLES
	glVertex3f 0.0,0.0,-10.0
	glVertex3f 1.0,1.0,-10.0
	glVertex3f 1.0,0.0,-10.0
	glEnd
	glpopmatrix()
	'Flip buffer
	SwapBuffers hdc
	'Check for WindowClose Event	
	If WaitEvent()=EVENT_WINDOWCLOSE End
Forever | 
| 
 | ||
| In BMax 'AND' and 'OR' are logical operators, their binary counterparts being '&' and '|'... lpPixelFormat.dwFlags = PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER | PFD_DRAW_TO_WINDOW ...ETC... |