2011-08-15 38 views
2
glEnable(GL_TEXTURE_2D); 
glEnable(GL_BLEND); 
glBlendFunc(GL_ONE, GL_SRC_COLOR); 
glShadeModel(GL_SMOOTH); // Разрешить плавное сглаживание 
glClearColor(0.0f, 0.0f, 0.0f, 0.5f); // Черный фон 
glHint(GL_LINE_SMOOTH_HINT, GL_NICEST); // Сглаживание линий 
glEnable(GL_BLEND);   // Разрешить смешивание 
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); 

glEnableClientState(GL_VERTEX_ARRAY); 
glEnableClientState(GL_NORMAL_ARRAY); 

//set the format and location for verticies 
glVertexPointer(3, GL_FLOAT, 0, vertices); 

glNormalPointer(GL_FLOAT, 0, normals); 

glCullFace(GL_FRONT); 
glDepthFunc(GL_LEQUAL); 

//draw the triangles 
glDrawArrays(GL_TRIANGLES, 0, numberOfVertices); 

這是我的代碼,現在我不知道爲什麼代碼不起作用。我會非常感謝您的建議。在opengl中平滑不起作用

+0

你可以添加一些你想要做的解釋嗎? –

+0

當然可以。我從文件中讀取頂點和法線。此代碼加載並繪製一個模型。我用三角形繪製,模型是完美的,但光滑不起作用,我不知道爲什麼。 – Oleg

+0

@Oleg我說這些代碼完美無瑕,現在證明了相反的意思,說明你期望它做什麼和做什麼! –

回答

1

在這種情況下,您似乎沒有正確理解術語平滑

首先,GL_LINE_SMOOTH_HINT隻影響線。此外,我參考the documentation

第二,glShadeModel()設置您的下一個原語應具有的着色類型。 GL_SMOOTH將使得在每個結果像素片段中插入頂點的顏色。然而,只有一個計算出的頂點顏色並自動將其分配給您的圖元代表的每個像素片段。此外,我指的是the documentation

你的理解的光滑不是,就像你認爲的,適用於三角形。如果你確實想要一個平滑模型,你應該增加模型中的多邊形數量。

+0

非常感謝您的建議。 – Oleg