gpt4 book ai didi

iphone - 在 iPhone 上的 open gl es 2.0 中显示图像

转载 作者:行者123 更新时间:2023-12-03 19:42:25 24 4
gpt4 key购买 nike

所以我刚刚开始在 Open GL ES 2.0 中进行一些工作。我的总体印象是,Xcode 中从 1.1 模板到 2.0 模板的切换给每个人带来了一些困惑,因此,2.0 没有太多帮助(如果有什么真正好的和信息丰富的东西,比如71squared 1.1 模板上的视频(2.0 除外,欢迎发布链接)。

我的问题是在屏幕上显示图像。

现在,我已经在我的drawFrame方法中得到了这个。

[(EAGLView *)self.view setFramebuffer];

// Replace the implementation of this method to do your own custom drawing.
static float transY = 0.0f;

glClearColor(0.0f, 1.0f, 0.0f, 1.0f);
glClear(GL_COLOR_BUFFER_BIT);
[playerCube drawAtPoint:CGPointMake(160.0f, 240.0f)];


if ([context API] == kEAGLRenderingAPIOpenGLES2)
{
// Use shader program.
glUseProgram(program);

// Update uniform value.
glUniform1f(uniforms[UNIFORM_TRANSLATE], (GLfloat)transY);
transY += 0.075f;


// Validate program before drawing. This is a good check, but only really necessary in a debug build.
// DEBUG macro must be defined in your debug configurations if that's not already the case.

if (![self validateProgram:program])
{
NSLog(@"Failed to validate program: %d", program);
return;
}
}
else
{
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glTranslatef(0.0f, (GLfloat)(sinf(transY)/2.0f), 0.0f);
transY += 0.075f;
}

glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);



[(EAGLView *)self.view presentFramebuffer];

本质上是没有方 block 弹跳的模板。顺便说一句,这是在我的 ViewController.m 中。它本身就可以很好地工作。然而,我在显示图像的代码方面运气不佳。我使用的是苹果崩溃着陆示例中的Texture2D 文件,但无论图像相关代码放在哪里,我都没有太多运气。

我已经使用 playerCube = [[Texture2D alloc] initWithImage:[UIImage imageNamed:@"Cubix.png"]]; 来分配它,即使我没有这样做,这也可能是正确的已将其放在正确的位置,并且[playerCube drawAtPoint:CGPointMake(160.0f, 240.0f)];

等等,因为我没有正确设置图像的高度和宽度,所以一开始就不会显示任何内容?我想我已经回答了我的问题的这一部分。如果我使用像 image.frame = CGRectMake (); 这样的东西会起作用吗?还是不适用于 2D 纹理?另外我应该把这段代码放在哪里才能让它正常工作?

希望我对此有所了解。我以前从未在 StackOverflow 上发布过问题。

最佳答案

我在 this example 中展示了如何在 iPhone 上的 OpenGL ES 2.0 中将图像显示为纹理。 ,其中图像是来自摄像机的视频帧,并且 this example ,我将 PVR 压缩纹理作为图像拉入。前一个示例在文章 here 中进行了描述。 .

我在 OpenGL ES 2.0 类的视频中描述了顶点和片段着色器的工作原理以及它们的所有支持代码,该视频是我免费提供的 iOS 开发类(class)的一部分 on iTunes U 。此外,我强烈建议您阅读 Jeff LaMarche 的 series of posted chapters摘自他未出版的 OpenGL ES 2.0 书籍。

简而言之,加载纹理后,您需要使用如下代码将其作为统一附加到着色器程序:

glActiveTexture(GL_TEXTURE0);
glBindTexture(GL_TEXTURE_2D, myTexture);
glUniform1i(myTextureUniform, 0);

在片段着色器中,您需要定义纹理统一:

uniform sampler2D myTexture;

然后在适当的点对纹理的颜色进行采样:

gl_FragColor = texture2D(myTexture, textureCoordinate);

我再次在类里面更详细地讨论了这一点,您可以使用这些示例作为工作的起点。

关于iphone - 在 iPhone 上的 open gl es 2.0 中显示图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4280069/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com