gpt4 book ai didi

macos - Xcode 可执行文件找不到 glsl 文件

转载 作者:行者123 更新时间:2023-12-02 05:16:57 25 4
gpt4 key购买 nike

这是我第一次尝试学习OpenGL,我是按照书上的例子来的。我正在使用 Xcode 在 OS X 10.8 下进行。代码如下:

#include "Angel.h"

const int numPoints = 5000;
typedef vec2 point2;

void init(){

point2 points[numPoints];
point2 vertices[3] = {
point2(-1.0, -1.0), point2(0.0, 1.0), point2(1.0, -1.0)
};

points[0] = point2(0.25, 0.5);

for (int k = 1; k < numPoints; k++) {
int j = rand()%3;
points[k] = (points[k-1]+vertices[j])/2.0;
}

GLuint program = InitShader("vertex.glsl", "fragment.glsl");
glUseProgram(program);

GLuint abuffer;
glGenVertexArraysAPPLE(1, &abuffer);
glBindVertexArrayAPPLE(abuffer);

GLuint buffer;
glGenBuffers(1, &buffer);
glBindBuffer(GL_ARRAY_BUFFER, buffer);
glBufferData(GL_ARRAY_BUFFER, sizeof(points), points, GL_STATIC_DRAW);

GLuint location = glGetAttribLocation(program, "vPosition");
glEnableVertexAttribArray(location);
glVertexAttribPointer(location, 2, GL_FLOAT, GL_FALSE, 0, BUFFER_OFFSET(0));

glClearColor(1.0, 1.0, 1.0, 1.0);

}


void display(){
glClear(GL_COLOR_BUFFER_BIT);
glDrawArrays(GL_POINTS, 0, numPoints);
glFlush();
}

int main(int argc, char** argv){
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA);
glutInitWindowSize(640, 480);

glutCreateWindow("Sierpinski Gasket");

init();
glutDisplayFunc(display);
glutMainLoop();

return 0;
}

它编译。但是当我尝试执行它时,窗口没有出现。当我调用 init() 函数时出现问题。没有它,窗口出现但背景为黑色。有了它,就没有窗口了。可以找到代码here .

更新

显然程序在 GLuint program = InitShader("vertex.glsl", "fragment.glsl"); 行中退出,因为它没有找到着色器文件。我怎样才能告诉程序使用这些文件?我的意思是我在与 .h.cpp 相同的文件夹中有 .glsl 文件,但是当 Xcode 构建项目时,可执行文件不是在与 .glsl 文件相同的位置。如何在 Xcode 中解决这个问题?

最佳答案

GLSL 文件在程序运行时加载。所以不是 XCode 找不到文件,而是你的程序。最可能的原因是,您使用了文件的相对路径(如在您提供的代码片段中),但使用与硬编码文件位置不匹配的工作路径启动程序。通常你的程序二进制文件被构建到一个专用的构建目录中。

快速修复是将 GLSL 文件复制到与二进制文件相同的目录中。正确的解决方案是将文件放在一个众所周知的位置。在 MacOS X 中,您可以为此使用应用程序包。请参阅 MacOS X 开发人员文档,了解如何将应用程序资源放入应用程序包中以及如何访问它们。 XCode 还提供了自动将文件复制到生成的包中的工具。

关于macos - Xcode 可执行文件找不到 glsl 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14519211/

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