OpenGL problems with AmigaMerlin 3.0 XP Drivers

Started by NitroX infinity, 11 September 2003, 10:33:53

Previous topic - Next topic

Nightbird

@ Phalanx
the latest version of the Anim8or program is the 0.85
so the others versions are old
but Anim8or stays a nice utility
where is the problem ?



__________________________________________________

Network powered by 3Dfx and AMD
__________________________________________________

______________________________________________

In-ter-ac-tive :
The way video games were always meant to be played
______________________________________________

Welcome to 3dfxzone.it Community
_____________________________

Nightbird

#31
@ Koolsmosky
the 1.04.00 drivers for Win2k own the OpenGL(r) Driver Version 1.0.0.0734 ICD, i tried the .0734 and the software doesn't start

@ Phalanx
what do you name "the original 3dfx Win2k drivers" ? the V1.00.00 ? i know 7 3dfx packages for a V4/5 under Win2 ! give a date for the driver (look in the system 32)
do you mix "the original driver" with the 0.700 ?

_________________________________________________

Network powered by 3Dfx and AMD
__________________________________________________

______________________________________________

In-ter-ac-tive :
The way video games were always meant to be played
______________________________________________

Welcome to 3dfxzone.it Community
_____________________________

NitroX infinity

Aargh, /me is getting confused.

Here's the deal:

1. Standard V5 5500 AGP drivers from Windows XP worked perfect.
2. 3DFX WHQL Driver 1.04 also worked perfect
3. AmigaMerlin 3.0xp. OpenGL didn't work; program refused to start.
4. Installing OpenGL version 1.0.0.0700 worked partially; program now starts and works but does not display four views (properly).

The problem is the opengl dll file. For the rest, everything about AM 3.0xp works.
 

Nightbird

thks

about the 3dfx whql 1.04 (under Win2k ??) they work perfectly without changing the opengl icd inside ?
this is important because the opengl icd inside the driver 1.04 is the version 0.734 (> .700)
in theory, the software is not able to start

__________________________________________________

Network powered by 3Dfx and AMD
__________________________________________________

______________________________________________

In-ter-ac-tive :
The way video games were always meant to be played
______________________________________________

Welcome to 3dfxzone.it Community
_____________________________

NitroX infinity

I am pretty sure that Anim8or did work with those WHQL drivers without changing anything about them. I'm eager to test it again myself but my entire system is a complete mess currently, to many files that need to be saved in to many places. So for me testing is out of the question, sorry for that.
 

Steve

koolsmoky, actually Anim8or only uses a single OpenGL context and only uses it in a single window.  There were far too many failures in numerous low-end card's drivers when I was using multiple GL contexts.  To make the 4 views I change the viewport and set the scissor to each quadrant and draw the appropriate view.  When only one view shows up it's because the driver fails to translate the image according to the current viewport correctly.

Question:  What pixel formats does the VooDoo5 export when the screen is in true color mode?  Have you tried running Anim8or in 16 bpp mode when it fails to run higher pixel depths?

Comment:  I don't request a 32 bit pixel format from Anim8or.  I use ChoosePixelFormat to pick the format with the following code.  It should return the closest match:

PIXELFORMATDESCRIPTOR pfd, *ppfd;
int pixelformat;

ppfd = &pfd;

ppfd->nSize = sizeof(PIXELFORMATDESCRIPTOR);
ppfd->nVersion = 1;
ppfd->dwFlags = PFD_DRAW_TO_WINDOW |
               PFD_DOUBLEBUFFER |
               PFD_SUPPORT_OPENGL;
ppfd->iLayerType = PFD_MAIN_PLANE;
ppfd->cAlphaBits = 0;
ppfd->cAuxBuffers = 0;
ppfd->bReserved = 0;

ppfd->iPixelType = PFD_TYPE_RGBA;
ppfd->cColorBits = 24;

ppfd->cDepthBits = 24;
ppfd->cAccumBits = 0;
ppfd->cStencilBits = 0;

if ((pixelformat = ChoosePixelFormat(hdc, ppfd)) == 0) {
   errorNo = GetLastError();
   SYS_FormatError(hWnd, "ChoosePixelFormat() failed", errorNo);
       return -1;
}
 

koolsmoky

Hi Steve,
Thanks for the code snippet. Looking at it I must say the pixel format can't be what's causing the 3dfx 1.0.0.761 ICD to crash. I made a test program with the same format and double-checked. The format works. Could you show me where you call wglMakeCurrent()? I've tried running Anim8or in 16bpp and 32bpp and both are no go with V5. Well now I think looking around pixel formats is not going to help but here are the formats exported. This is with the 3dfx 1.0.0.761 ICD, both 16bpp and 32bpp selects PixelFormat [2] using your pixel format request.

[16bpp on V5 3dfx 1.0.0.761 ICD]
PixelFormat [1]
nSize           = 40
nVersion        = 1
dwFlags         = 52
iPixelType      = 0
cColorBits      = 16
cRedBits        = 5
cRedShift       = 11
cGreenBits      = 6
cGreenShift     = 5
cBlueBits       = 5
cBlueShift      = 0
cAlphaBits      = 0
cAlphaShift     = 0
cAccumBits      = 64
cAccumRedBits   = 16
cAccumGreenBits = 16
cAccumBlueBits  = 16
cAccumAlphaBits = 16
cDepthBits      = 16
cStencilBits    = 8
cAuxBuffers     = 0
iLayerType      = 0
bReserved       = 0
dwLayerMask     = 0
dwVisibleMask   = 0
dwDamageMask    = 0

PixelFormat [2]
nSize           = 40
nVersion        = 1
dwFlags         = 53
iPixelType      = 0
cColorBits      = 16
cRedBits        = 5
cRedShift       = 11
cGreenBits      = 6
cGreenShift     = 5
cBlueBits       = 5
cBlueShift      = 0
cAlphaBits      = 0
cAlphaShift     = 0
cAccumBits      = 64
cAccumRedBits   = 16
cAccumGreenBits = 16
cAccumBlueBits  = 16
cAccumAlphaBits = 16
cDepthBits      = 16
cStencilBits    = 8
cAuxBuffers     = 0
iLayerType      = 0
bReserved       = 0
dwLayerMask     = 0
dwVisibleMask   = 0
dwDamageMask    = 0

PixelFormat [3]
nSize           = 40
nVersion        = 1
dwFlags         = 53
iPixelType      = 0
cColorBits      = 16
cRedBits        = 5
cRedShift       = 11
cGreenBits      = 6
cGreenShift     = 5
cBlueBits       = 5
cBlueShift      = 0
cAlphaBits      = 0
cAlphaShift     = 0
cAccumBits      = 64
cAccumRedBits   = 16
cAccumGreenBits = 16
cAccumBlueBits  = 16
cAccumAlphaBits = 16
cDepthBits      = 16
cStencilBits    = 8
cAuxBuffers     = 0
iLayerType      = 0
bReserved       = 0
dwLayerMask     = 0
dwVisibleMask   = 0
dwDamageMask    = 0

[32bpp V5 3dfx 1.0.0.761 ICD]
PixelFormat [1]
nSize           = 40
nVersion        = 1
dwFlags         = 52
iPixelType      = 0
cColorBits      = 32
cRedBits        = 8
cRedShift       = 16
cGreenBits      = 8
cGreenShift     = 8
cBlueBits       = 8
cBlueShift      = 0
cAlphaBits      = 8
cAlphaShift     = 24
cAccumBits      = 64
cAccumRedBits   = 16
cAccumGreenBits = 16
cAccumBlueBits  = 16
cAccumAlphaBits = 16
cDepthBits      = 24
cStencilBits    = 8
cAuxBuffers     = 0
iLayerType      = 0
bReserved       = 0
dwLayerMask     = 0
dwVisibleMask   = 0
dwDamageMask    = 0

PixelFormat [2]
nSize           = 40
nVersion        = 1
dwFlags         = 53
iPixelType      = 0
cColorBits      = 32
cRedBits        = 8
cRedShift       = 16
cGreenBits      = 8
cGreenShift     = 8
cBlueBits       = 8
cBlueShift      = 0
cAlphaBits      = 8
cAlphaShift     = 24
cAccumBits      = 64
cAccumRedBits   = 16
cAccumGreenBits = 16
cAccumBlueBits  = 16
cAccumAlphaBits = 16
cDepthBits      = 24
cStencilBits    = 8
cAuxBuffers     = 0
iLayerType      = 0
bReserved       = 0
dwLayerMask     = 0
dwVisibleMask   = 0
dwDamageMask    = 0

PixelFormat [3]
nSize           = 40
nVersion        = 1
dwFlags         = 53
iPixelType      = 0
cColorBits      = 32
cRedBits        = 8
cRedShift       = 16
cGreenBits      = 8
cGreenShift     = 8
cBlueBits       = 8
cBlueShift      = 0
cAlphaBits      = 8
cAlphaShift     = 24
cAccumBits      = 64
cAccumRedBits   = 16
cAccumGreenBits = 16
cAccumBlueBits  = 16
cAccumAlphaBits = 16
cDepthBits      = 24
cStencilBits    = 8
cAuxBuffers     = 0
iLayerType      = 0
bReserved       = 0
dwLayerMask     = 0
dwVisibleMask   = 0
dwDamageMask    = 0

 

koolsmoky

I spent some time and did some tests.

> 1. Standard V5 5500 AGP drivers from Windows XP worked perfect.

Winxp standard driver uses the MS GDI OpenGL renderer. You can use the renderer with AM3.0 as well. Just rename 3dfxogl.dll to 3dfxogl.bak in the windows system or system32 directory.

> 2. 3DFX WHQL Driver 1.04 also worked perfect

Nope. It's a no go at least with my win2k test box. It gives the same wglMakeCurrent() failed error.

> 3. AmigaMerlin 3.0xp. OpenGL didn't work; program refused to start.

Same error as the 3dfx 1.04 driver set. Exactly same error code.

> 4. Installing OpenGL version 1.0.0.0700 worked partially; program now starts and works but does not display four views (properly).

Check with win2k + 3dfx 1.04 driver set + 3dfx 1.0.0.700 ICD. 4 view mode doesn't work.

Phalanx, if you find a driver set that works perfect, please share it with us.
 

Nightbird

We can perhaps try the FalconFly's Archive drivers ? the official and some third party drivers ?

__________________________________________________

Network powered by 3Dfx and AMD
__________________________________________________

______________________________________________

In-ter-ac-tive :
The way video games were always meant to be played
______________________________________________

Welcome to 3dfxzone.it Community
_____________________________

NitroX infinity

I'm not sure but I think Í might have had anim8or runnung with the 3DHQ drivers, they're in this list:
http://www.voodoofiles.com/type.asp?cat_id=1&Orders=DESC&Sort=Date&Hide=Y&listall=N
 

koolsmoky

#40
The 3DHQ win2k driver set will not work. The ppl behind the new binaries for 3DHQ and AM3.0 are the same.

EDIT: removed smiles
 

Steve

Thanks for thie info, koolsmoky.  I don't see anything strange in those foramts.  I suspect that it may be due to the fact that Ani8or draws it's OpenGL output to a child window.  Are the formats different for chld windows?  Here's the code I use to created the window classes:

// Create the parent window:

lWidth = CW_USEDEFAULT;
lHeight = 0;
lStyle = WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS;
hInst = hInstance;
mainWnd = CreateWindow(
          szAppName,
          szAppTitle,
          lStyle,
          CW_USEDEFAULT, 0, lWidth, lHeight,
          NULL,
          NULL,
          hInstance,
          NULL
      );
if (!mainWnd)
   return FALSE;

// Create the OpenGL child window:

glWnd = CreateWindow(
          szAppNameOpenGL,
          NULL,
          WS_CLIPCHILDREN | WS_CLIPSIBLINGS | WS_CHILD,
          100, 50, 100, 75,
          mainWnd,
          NULL,
          hInstance,
          NULL
      );
if (!glWnd)
   return FALSE;

 

dborca

QuoteOriginally posted by Phalanx
I get this error whenever I try to run a program called Anim8or (http://www.anim8or.com) and after clicking OK it exits the program. [:(!]

Is there any way to solve this? (without installing other drivers)

Uhmmm... Anim8r requires 24bpp. We need to trick it...


Regards,
Borca Daniel
Regards,
Daniel Borca

Steve

dborca, Anim8or does not have to have 24bpp.  When calling ChoosePixelFormat() and asking for 24bpp Windows will return the closest match.  If there are no 24bpp formats but there are 32bpp or 16bpp formats then one of those will be returned.
 

koolsmoky

Hi Steve,
Thanks for the info. I tried running the 3dfx 1.0.0.761 ICD with the code you provided and it seems that the ICD is incapable of rendering to a child window. I've tested with a variety of window class styles but all attepmts failed. How are you registering your window class?