gpt4 book ai didi

iphone - OPENGL ES 2.0 在屏幕上呈现文本

转载 作者:行者123 更新时间:2023-11-29 11:22:28 25 4
gpt4 key购买 nike

我目前正在从事 OPENGL ES 2.0 项目。我正在制作条形图应用程序。我在制作图表方面取得了成功。我正在尝试在图表上插入文本。我发现没有直接的解决方案来实现相同的目标。

我遇到了一个 OPENGL ES 1.1 代码,其中包含以下几行。

文件:在 GLViewController.m 中(来自 drawView 函数)

Texture2D *textTex = [[Texture2D alloc] initWithString:@"Text" 

dimensions:CGSizeMake(100., 40.0)

alignment:UITextAlignmentCenter

font:[UIFont boldSystemFontOfSize:10.0]];

[textTex drawAtPoint:CGPointMake(160.0, 100.0) depth:-1];

在Texture2D.m文件中,

- (void) drawAtPoint:(CGPoint)point depth:(CGFloat)depth

{

GLfloat coordinates[] = {

0, _maxT,

_maxS, _maxT,

0, 0,

_maxS, 0

};

GLfloat width = (GLfloat)_width * _maxS,

height = (GLfloat)_height * _maxT;

GLfloat vertices[] = {

-width / 2 + point.x, -height / 2 + point.y, depth,

width / 2 + point.x, -height / 2 + point.y, depth,

-width / 2 + point.x, height / 2 + point.y, depth,

width / 2 + point.x, height / 2 + point.y, depth

};

glBindTexture(GL_TEXTURE_2D, texture.name);

glVertexPointer(3, GL_FLOAT, 0, vertices); //1

glTexCoordPointer(2, GL_FLOAT, 0, coordinates); //2

glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);

}

当我尝试将此代码转换为 OPENGL ES 2.0 代码时,我无法为标记为 1 和 2 的行找到合适的转换。有人可以帮我将此代码转换为 OPENGL ES 2.0 代码吗?

或者,如果有人知道在屏幕上书写文本的更简单方法,请告诉我。

最佳答案

OpenGL ES 1.x 和 2.x 在几何方面共享很多概念。您指定顶点,然后将它们与几何图形连接起来,几何图形变成像素。不同之处在于您在两个地方指定自定义代码:获取输入几何图形并找出它在屏幕上的位置以及它通过管道传递的内容,并根据传入的信息找出单个片段的颜色沿管道。

因为 ES 1.x 在这个意义上不是可编程的,所以它在两个地方都有固定的功能。这意味着固定的数据结构,因此您通过 glVertexPointerglTexCoordPointer 等提供数据的原因。您正在为 OpenGL 写入石头的固定的、预定的字段提供值描述一个顶点。

因为 ES 2.x 是完全可编程的和极简主义的,它没有假设哪些字段描述了一个顶点,因此没有特殊情况的数据提供方法,例如提供位置的方法 (glVertexPointer) ,另一个提供纹理坐标(glTexCoordPointer)等。

在 ES 2.x 中,您使用 glVertexAttribPointer 来替换所有固定含义的 ES 1.x 调用。第一个参数标识您通过索引指定的属性,该索引是您自己通过 glBindAttribLocation 强制执行的,或者由您自行确定并通过 glGetAttribLocation 请求返回。

您还需要编写一个合适的片段和像素着色器,基本上只是为了传递您指定的纹理坐标,并对每个像素的纹理进行采样,然后将其传递。每个正文中应该只有一两行。

可能您已准备好某种框架来处理图形中的这些内容。因为 ES 2.x 的属性非常通用,所以应该可以重用很多相同的东西。

关于iphone - OPENGL ES 2.0 在屏幕上呈现文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6267011/

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