Swift 我能';我找不到我的GLSL代码哪里出错了?

Swift 我能';我找不到我的GLSL代码哪里出错了?,swift,opengl-es,Swift,Opengl Es,我是一名iOS开发人员,使用Xcode编译一些GLSL代码。shaderv.vsh代码如下所示: attribute vec4 position; attribute vec4 positionColor; attribute vec2 textCoordinate; uniform mat4 projectionMatrix; uniform mat4 modelViewMatrix; varying lowp vec2 varyTextCoord; varying lowp vec4 var

我是一名iOS开发人员,使用Xcode编译一些GLSL代码。
shaderv.vsh
代码如下所示:

attribute vec4 position;
attribute vec4 positionColor;
attribute vec2 textCoordinate;
uniform mat4 projectionMatrix;
uniform mat4 modelViewMatrix;
varying lowp vec2 varyTextCoord;
varying lowp vec4 varyColor;

void main() {
    varyTextCoord = textCoordinate;
    varyColor = positionColor;

    vec4 vPos;
    vPos = projectionMatrix * modelViewMatrix * position;
    gl_Position = vPos;
}

precision lowp float;

varying lowp vec2 varyTextCoord;
varying lowp vec4 varyColor;
uniform sampler2D colorMap;

void main() {
    vec4 cs = texture2D(colorMap,varyTextCoord);
    vec4 cd = varyColor;
    float s = 0.2;
    float d = 0.5;
    vec4 color = (cs * s) + (cd * d);
    gl_FragColor = color;
}

shaderf.fsh
代码如下所示:

attribute vec4 position;
attribute vec4 positionColor;
attribute vec2 textCoordinate;
uniform mat4 projectionMatrix;
uniform mat4 modelViewMatrix;
varying lowp vec2 varyTextCoord;
varying lowp vec4 varyColor;

void main() {
    varyTextCoord = textCoordinate;
    varyColor = positionColor;

    vec4 vPos;
    vPos = projectionMatrix * modelViewMatrix * position;
    gl_Position = vPos;
}

precision lowp float;

varying lowp vec2 varyTextCoord;
varying lowp vec4 varyColor;
uniform sampler2D colorMap;

void main() {
    vec4 cs = texture2D(colorMap,varyTextCoord);
    vec4 cd = varyColor;
    float s = 0.2;
    float d = 0.5;
    vec4 color = (cs * s) + (cd * d);
    gl_FragColor = color;
}

编译此代码时,会出现一些错误:

ERROR: 0:15: 'premature EOF' : syntax error syntax error

ERROR: 0:5: 'premature EOF' : syntax error syntax error

我找不出哪里错了。这困扰了我很长时间。救救我

我已经解决了这个问题。我的着色器代码是正确的。我错用了一个swift函数

let content = try? String(contentsOfFile: file, encoding: String.Encoding.utf8)
var source = UnsafePointer<GLchar>(content)
shader = glCreateShader(type)

glShaderSource(shader, 1,&source, nil)
let content=try?字符串(contentsOfFile:file,encoding:String.encoding.utf8)
var source=UnsafePointer(内容)
着色器=glCreateShader(类型)
glShaderSource(着色器、1和源代码、零)
编译着色器字符串时,我应该将其转换为cString

let content = try? String(contentsOfFile: file, encoding: String.Encoding.utf8)
let contentCString = content?.cString(using: .utf8)
var source = UnsafePointer<GLchar>(contentCString)
let content=try?字符串(contentsOfFile:file,encoding:String.encoding.utf8)
让contentCString=content?.cString(使用:.utf8)
var source=UnsafePointer(contentCString)

感谢大家的提示。

可能是着色器文件未被读取。可能是各自工作目录的路径错误。相同的swift代码,我可以正确编译另一个着色器代码。@rabbi76错误消息是“过早EOF”。这不是由代码引起的错误消息。这是我的。你能帮助我吗。@rabbid76期不是代码。问题是未分别读取着色器文件。尝试打印或转储着色器代码。