我有了一个实现如下一个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