C# .NET 3.5 sp1 응용 프로그램에 OpenGl 렌더링 코드가 많이 있습니다. 일부 코드는 this question에서 찾을 수 있습니다.텍스처가 OpenGL/Tao에서 작동하지 않습니다. C# for 인텔 칩셋
거대한 문제 : 코드가 915M 또는 Q35와 같은 인텔 칩셋에서 전혀 실행되지 않습니다. 이 칩셋은 OpenGL 1.4를 실행하기위한 spec이며, 내 코드는 모두 2의 강력 함입니다. 컴퓨터에 따라 Dell 또는 Intel에서 최신 드라이버로 업데이트를 시도했습니다. glActiveTextureARB에 실패
- :
는 충돌 실패의 두 가지 유형이 있습니다. 915M은 그 확장에 분명히 포함하지 않습니다.
- 쉐이더 로딩에 실패했습니다. 즉 glGenProgramsARB입니다. 기계가 순간 같은 느낌이 무엇에 따라 동결 또는 충돌하거나 Windows에서 7 원인을 XP 또는 Q35에서 915M에 이러한 함수를 호출하려고
.
또 다른 최악의 경우가 있습니다. 디스플레이가 이전 질문을 수정하지 못한다는 것입니다. 즉, 렌더링 된 디스플레이가 16 비트를 표시해야 할 때 8 비트 데이터를 표시하는 것처럼 보입니다. Q35 칩셋, 최신 Dell 드라이버에서 발생합니다. , XP를 실행 중이다.
이 문제에 대한 의견이 있으십니까? glDrawPixels로 돌아가는 것을 고려 중입니다. 느린 동안에도 작동합니다.
편집 : 더 많은 코드! 이 확장 것 같아, 당신은 충돌에 대해 아무것도 할 수 없습니다 슬프게도
const int mSize = 256;
ushort[] theImage = new ushort[mSize * mSize];
...
//datasetup
int x, y, i = 0 ;
for (x = 0; x < mSize; x++) {
for (y = 0; y < mSize; y++) {
theImage[(y * mSize) + x] = (ushort)i++;
}
}
...
//onpaint
int theTexName;
Gl.glGenTextures(1, out theTexName);
Gl.glBindTexture(Gl.GL_TEXTURE_2D, theTexName);
Gl.glTexImage2D(Gl.GL_TEXTURE_2D, 0, Gl.GL_LUMINANCE16, mSize, mSize,
0, Gl.GL_LUMINANCE, Gl.GL_UNSIGNED_SHORT, theImage);
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_LINEAR);
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_LINEAR);
//theMagBuffer = null;
Gl.glDisable(Gl.GL_BLEND);
Gl.glEnable(Gl.GL_TEXTURE_2D);
Gl.glPolygonMode(Gl.GL_FRONT_AND_BACK, Gl.GL_FILL);
Gl.glColor4d(1.0, 1.0, 1.0, 1.0);
Gl.glPushMatrix();
Gl.glBindTexture(Gl.GL_TEXTURE_2D, theTexName);
Gl.glBegin(Gl.GL_QUADS);
Gl.glTexCoord2f(0, 1);
Gl.glVertex2f(0, mSize);
Gl.glTexCoord2f(0, 0);
Gl.glVertex2f(0, 0);
Gl.glTexCoord2f(1, 0);
Gl.glVertex2f(mSize, 0);
Gl.glTexCoord2f(1, 1);
Gl.glVertex2f(mSize, mSize);
Gl.glEnd();
Gl.glDisable(Gl.GL_TEXTURE_2D);
Gl.glDisable(Gl.GL_FRAGMENT_PROGRAM_ARB);
Gl.glPopMatrix();
GetGLError("MAG");
Gl.glFinish();
"내 코드는 모두 2의 강력 함"이라고 말하면 텍스처의 크기가 2의 거듭 제곱임을 의미합니까? – Chris
예. 이 코드는 분명히 2의 거듭 제곱이 아니므로 이제는 깨닫습니다. d' oh ... – mmr
하지만이 코드는 2의 거듭 제곱으로 작동하지 않습니다. – mmr