我有一个存储在String值中的着色器:
var myShader =
" attribute vec4 a_position;" +
" void main() {" +
" gl_Position = a_position;" +
" }"
glShaderSource(shader, GLsizei(1), myShader, nil)
Run Code Online (Sandbox Code Playgroud)
函数glShaderSource具有绑定签名:
func glShaderSource(shader: GLuint, count: GLsizei, string: UnsafePointer<UnsafePointer<GLchar>>, length: UnsafePointer<GLint>)
Run Code Online (Sandbox Code Playgroud)
当我尝试直接将着色器String传递给glShaderSource时,我收到错误消息:
'String' is not convertible to 'UnsafePointer<UnsafePointer<GLchar>>'
Run Code Online (Sandbox Code Playgroud)
如何正确传递String?(xCode版本6.1(6A1052d))
经过半天的搜索,我找到了没有编译错误的工作解决方案,错误的内存访问失败了:
var cStringSource = (code as NSString).UTF8String
glShaderSource(shader, GLsizei(1), &cStringSource, nil)
Run Code Online (Sandbox Code Playgroud)
斯威夫特3:
let shaderStringUTF8 = shaderString.cString(using: String.defaultCStringEncoding)
var shaderStringUTF8Pointer = UnsafePointer<GLchar>(shaderStringUTF8)
glShaderSource(shaderHandle, GLsizei(1), &shaderStringUTF8Pointer, nil)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4016 次 |
| 最近记录: |