我有了一個實現如下一個GLKViewController ...IOS:OpenGL的三角形沒有顯示出來
#import "game-gl.h"
....
- (void)glkView:(GLKView *)view drawInRect:(CGRect)rect
{
renderFrameLine();
}
遊戲gl.c(我開始與S = .5)
void renderFrameLine() {
printf("Inside Render Line \n");
if(f>1.0f){
f = 0.0f;
}
else{
f = f+.01;
}
glClearColor(f, 0.65f, f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
if(s >2.0f){
s = -2.0f;
}
else{
s = s + 0.10f;
}
GLfloat vVertices[] = { s, s, 0.0f, s, -s, 0.0f, -s, s,
0.0f};
GLfloat colors[] = {
1.0f, 0.0f, 0.0f, 1.0f,
1.0f, 0.0f, 0.0f, 1.0f,
1.0f, 0.0f, 0.0f, 1.0f,
1.0f, 0.0f, 0.0f, 1.0f};
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 0, vVertices);
glEnableVertexAttribArray(0);
glDrawArrays(GL_TRIANGLES, 0, 4);
}
當我運行應用程序時,背景會改變顏色,但三角形不會顯示。任何想法我做錯了什麼?
問題似乎是與着色器編譯不...
shader = glCreateShader(type);
if (shader == 0){
#ifdef __APPLE__
printf("Shader Failed %d\n", type);
#endif
return 0;
}
打印出將着色器失敗(類型= GL_VERTEX_SHADER)
我評論了這一點,我仍然得到同樣的迴應,只一切似乎編譯好的...
UPDATE
我也看到了FOL降低警告,我不認爲這是相關的,因爲編譯檢查通過但是...
/Users/me/Development/test3/test3/game-gl.c:97:46:傳遞' GLbyte [148]」以類型的參數'爲const char *指針之間進行轉換爲整數類型用不同的符號
但正如我所說的這個檢查似傳...
glGetShaderiv(shader, GL_COMPILE_STATUS, &compiled);
if (!compiled) {
UPDATE AGAIN
好了,現在我們得到了一些地方...
programObject = glCreateProgram();
if(programObject == 0){
printf("Invalid program returned \n");
}
打印關閉該程序是無效的?!?!?!?
又一次
因此,我改變,試圖在.m文件抓取程序,但它仍然是0。
if(_program == 0){
NSLog(@"Still can not create program");
}
else{
resizeViewport(screenWidth, screenHeight);
InitializeOpenGL(0, 0, _program);
}
我通過着色器代碼假設你指的是我的着色器加載的位置。我正在將它們加載到C文件中,我非常肯定着色器正在編譯,我只是簡單地介紹一些讓我相信可能會發生的事情,但事實證明它們沒有什麼區別(編譯後另一個檢查通過了)。您可以在我發佈的代碼中看到啓用的屬性指針。我在初始化代碼中綁定了屬性。這是一個簡單的測試應用程序,所以我不相信我已經設置了撲殺。 – Jackie