3
由於某些原因,OpenGL行爲非常奇怪。在我NSOpenGLView的子類,我在-prepareOpenGL
方法下面的代碼:OpenGL行爲奇怪
- (void)prepareOpenGL {
GLfloat lightAmbient[] = { 0.5f, 0.5f, 0.5f, 1.0f };
GLfloat lightDiffuse[] = { 1.0f, 1.0f, 1.0f, 1.0f };
GLfloat lightPosition[] = { 0.0f, 0.0f, 2.0f };
quality = 0;
zCoord = -6;
[self loadTextures];
glEnable(GL_LIGHTING);
glEnable(GL_TEXTURE_2D);
glShadeModel(GL_SMOOTH);
glClearColor(0.2f, 0.2f, 0.2f, 0.0f);
glClearDepth(1.0f);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
glLightfv(GL_LIGHT1, GL_AMBIENT, lightAmbient);
glLightfv(GL_LIGHT1, GL_DIFFUSE, lightDiffuse);
glLightfv(GL_LIGHT1, GL_POSITION, lightPosition);
glEnable(GL_LIGHT1);
gameState = kGameStateRunning;
int i = 0; // HERE ********
[NSTimer scheduledTimerWithTimeInterval:0.03f target:self
selector:@selector(processKeys) userInfo:nil repeats:YES];
// Synchronize buffer swaps with vertical refresh rate
GLint swapInt = 1;
[[self openGLContext] setValues:&swapInt forParameter:NSOpenGLCPSwapInterval];
// Setup and start displayLink
[self setupDisplayLink];
}
我想分配一個處理按鍵輸入伊娃計時器,這樣我可以使它無效時,遊戲暫停(和再次它繼續),但是當我這樣做時(就像有意將它放在[NSTimer scheduledTimer ...)中,OpenGL不顯示我繪製的立方體。當我拿走它時,沒關係。所以我試着添加一個無害的聲明,int i = 0;
(製作成// HERE *******
),這使得照明無法正常工作!當我把它拿走時,一切都很好,但是當我把它放回去時,一切都是黑暗的。有人能爲此提出合理的解釋嗎?即使已經有多個聲明,只要創建任何變量即可完成此操作。
謝謝。
我想你可以期望使用像OpenGL這樣的低級API時可以使用這種類型的東西。 – mk12 2010-06-20 02:32:32