gpt4 book ai didi

objective-c - 将 GLfloat [] 数组转换为 GLfloat * 数组

转载 作者:太空宇宙 更新时间:2023-11-04 03:59:59 25 4
gpt4 key购买 nike

有没有更快的方法将下面的数据转换成c风格的指针数组?

GLfloat verticalLines [] = {
0.59, 0.66, 0.0,
0.59, -0.14, 0.0
}

我目前的方法是使用以下方法手动迭代数据:

-(GLfloat *)updateLineVertices{

int totalVertices = 6;
GLfloat *lineVertices = (GLfloat *)malloc(sizeof(GLfloat) * (totalVertices));

for (int i = 0; i<totalVertices; i++) {
lineVertices[i] = verticalLines[i];
}

return lineVertices;
}

一些额外的信息。最终,我需要一种易于操作的格式的数据,例如:

-(void)scaleLineAnimation{
GLfloat *lineVertices = [self updateLineVertices];
for (int i = 0; i<totalVertices; i+=3) {
lineVertices[i+1] += 0.5; //scale y axis
}
}

最佳答案

这取决于 verticalLines 是否会保留下来。如果它像上面那样定义并且它不会改变,你可以放弃整个 malloc 并只将 lineVertices 指向它。

linesVertices = &verticalLines[0]

如果 verticalLines 要改变,你可能想要你自己的副本,所以你别无选择,只能在你这样做的时候将实际数据从内存的一部分复制到另一部分,也就是说,这可能是优雅一点

for (int i = 0; i<totalVertices; i++){
lineVertices[i] = verticalLines[i];
}

或者首选方法可能是使用 memcopy(),这里是一些工作代码

//MemcopyTest.c
#include <cstdlib>
#include <stdio.h>
#include <string.h>

int main(){
float a[] = {1.0,2.0,3.0}; //Original Array

int size = sizeof(float)*3;
float *b = (float*)malloc(size); //Allocate New Array
memcpy(b, a, size); //Copy Data

for(int i = 0; i<3; i++){
printf("%f\n", b[i]);
}
free(b);
}

关于objective-c - 将 GLfloat [] 数组转换为 GLfloat * 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12865892/

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