2016-04-22 37 views
1

OpenGLコンテキストを作成しようとしています。 Radeon GPUで起動すると正常に動作しますが、テストしたすべてのNVIDIAカードでクラッシュします。SetPixelFormatが0を返しますエラーコード3221684230(C0070006)

m_hWindowHandleToDevice = GetDC(hWnd); 

m_PixelFormat = { 
    sizeof(PIXELFORMATDESCRIPTOR), 
    1, 
    PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, //Flags 
    PFD_TYPE_RGBA,    //The kind of framebuffer. RGBA or palette. 
    32,       //Colordepth of the framebuffer. 
    0, 0, 0, 0, 0, 0, 
    0, 
    0, 
    0, 
    0, 0, 0, 0, 
    24,       //Number of bits for the depthbuffer 
    8,       //Number of bits for the stencilbuffer 
    0,       //Number of Aux buffers in the framebuffer. 
    PFD_MAIN_PLANE, 
    0, 
    0, 0, 0 
}; 

int PixelFormatHandle = ChoosePixelFormat(m_hWindowHandleToDevice, &m_PixelFormat); 
BOOL bPixelFormatOK = SetPixelFormat(m_hWindowHandleToDevice, PixelFormatHandle, &m_PixelFormat); 
DWORD nLastError = GetLastError(); 
m_hOpenGLContext = wglCreateContext(m_hWindowHandleToDevice); 
nLastError = GetLastError(); 

変数は次のとおりです。

PixelFormatHandle = 9 

bPixelFormatOK = 0 

nLastError (first time) = 3221684230 

nLastError (at the end) = 2000 //ERROR_INVALID_PIXEL_FORMAT 

m_hOpenGLContext = 0 

m_hWindowHandleToDevice = 670115fb //so it is set... 

すべてのドライバが更新され、私が使用しています:

NVIDIA NVS 3100M/not working 

NVIDIA gtx 780/not working 

AMD Radeon R7 M370/is working 

Intel(R) HD Graphics 530/is working 

は事前

でお願いします

はトーマス

+0

私もさまざまなオプションをテストしました(16ビット深度バッファー24ビットカラーデプスなど...) – Thomas

答えて

2

MSDNは...(私は多くの場合、そこに32を見てきましたが)cColorBitsがアルファなしである(FALSE付き)

SetPixelFormat()が失敗したと言います。そしてそれはそこから降りる。 ChosenPixelFormatDescribePixelFormatと調べて、何か問題がないことを確認します。

Pixel Formatは1回しか設定できません。あなたがしていることを確認してください。 ここではどこに電話しますか?最も安全な場所はWM_CREATEハンドラです。

この伝説の古いものを試してみてください:Nehe OpenGL Window(最後にソースがあります)。 それでもうまくいかないのであれば、それは奇妙なことでしょう。それとも、知っている:あまりにもスマートにしようとしないとGLFWまたは同様の使用しないでください。

+0

ありがとう! Nehesチ​​ュートリアルはとても役に立ちました – Thomas

関連する問題