美文网首页
Metal学习

Metal学习

作者: Rying7 | 来源:发表于2022-07-12 14:40 被阅读0次

    Metal

    1. Metal与OpenGL的区别
      OpenGL ES的渲染代码可以抽象为Render Targets的设定,Shaders绑定,设置Vertex Buffers、Uniforms和Textures,最后调用Draws指令。
    glBindFramebuffer(GL_FRAMEBUFFER, myFramebuffer);
    glUseProgram(myProgram);
    glBindBuffer(GL_ARRAY_BUFFER, myVertexBuffer);
    glBindBuffer(GL_UNIFORM_BUFFER, myUniforms);
    glBindTexture(GL_TEXTURE_2D, myColorTexture);
    glDrawArrays(GL_TRIANGLES, 0, numVertices);
    

    [图片上传失败...(image-f3ca44-1657608039143)]

    再看Metal的渲染代码: Render Targets设定 是创建encoder; Shaders绑定 是设置pipelineState; 设置Vertex Buffers、Uniforms和Textures 是setVertexBuffer和setFragmentBuffer; 调用Draws指令 是drawPrimitives; 最后需要再调用一次endEncoding。

    encoder = [commandBuffer renderCommandEncoderWithDescriptor:descriptor]; [encoder setPipelineState:myPipeline];
    [encoder setVertexBuffer:myVertexData offset:0 atIndex:0];
    [encoder setVertexBuffer:myUniforms offset:0 atIndex:1];
    [encoder setFragmentBuffer:myUniforms offset:0 atIndex:1];
    [encoder setFragmentTexture:myColorTexture atIndex:0];
    [encoder drawPrimitives:MTLPrimitiveTypeTriangle vertexStart:0  vertexCount:numVertices];
    [encoder endEncoding];
    

    [图片上传失败...(image-2bff2b-1657608039143)]

    参考

    资深程序员的Metal入门教程总结

    相关文章

      网友评论

          本文标题:Metal学习

          本文链接:https://www.haomeiwen.com/subject/slkabrtx.html