Metal 編程指南和開(kāi)發(fā)一個(gè)游戲

Metal編程指南

讓你從零到壹 上手 metal 開(kāi)發(fā)。
上半部分
學(xué)習(xí)如何繪制三角形認(rèn)識(shí)。 繪制三角形 等于 學(xué)習(xí)一門(mén)新語(yǔ)言 打印一個(gè) “hello world”
學(xué)習(xí)坐標(biāo)和矩陣來(lái)設(shè)置動(dòng)畫(huà)
通過(guò)矩陣來(lái)渲染3D圖形
了解了空間和矩陣知識(shí),學(xué)習(xí)如何加載3D模型。

下半部分
認(rèn)識(shí)紋理和設(shè)置紋理貼圖
通過(guò)UV坐標(biāo)對(duì)紋理進(jìn)行裁剪
通過(guò)模型來(lái)學(xué)習(xí)法線
學(xué)習(xí)燈光

最后 做一個(gè)游戲

第一章 三角形

為了介紹 Metal 的基本概念,我們從一個(gè)簡(jiǎn)單的三角形示例程序開(kāi)始。本章將說(shuō)明繪制一個(gè)三角形的 Metal 程序所需要的步驟,我們將要編寫(xiě)的程序只是繪制幾何形狀 Metal 應(yīng)用程序的最基本的例子。本章主要分為兩個(gè)步驟完成:
1. 使用 Metal 進(jìn)行填充背景色清屏。
2. Metal 中的圖元類(lèi)型。
3. Metal 中的坐標(biāo)系統(tǒng)。
4. Metal 著色器語(yǔ)言。
5. 繪制一個(gè)三角形。

本章將簡(jiǎn)單介紹從創(chuàng)建到從屏幕中看到三角形步驟的簡(jiǎn)單的基礎(chǔ)知識(shí),在本書(shū)的后面,我們將詳細(xì)介紹這些步驟并進(jìn)一步說(shuō)明 API。本章的目的是幫助你構(gòu)建和運(yùn)行第一個(gè)樣本示例,使你對(duì)創(chuàng)建 Metal 應(yīng)用有基礎(chǔ)的概念性了解。

Metal 常見(jiàn)錯(cuò)誤處理

    CompileMetalFile XXX, fatal error: 'XXX.h' file not found
    // metal 中 引用其他文件需要其完整的相對(duì)路徑 
    fileA.h 在 metal 文件的上層 則需要 #include "../fileA.h"

使用 newDefaultLibrary 獲取不到 MTLLibrary
目前遇到這種問(wèn)題是因?yàn)樵?.a 庫(kù)中使用Metal 如果shader 代碼不多推薦使用 string來(lái)編寫(xiě)
如果代碼多請(qǐng)使用 LLVM 來(lái)生成 .metallib 文件

xcrun -sdk iphoneos metal MyLibrary.metal -o MyLibrary.air
xcrun -sdk iphoneos metallib MyLibrary.air -o MyLibrary.metallib

string 方式

- (void)config {
    NSError *error = NULL;
    id<MTLLibrary> defaultLibrary =[_device newLibraryWithSource:[self metalStrings] options:nil error:&error];
    // ...
}

- (NSString*)metalStrings {
    NSString *str = @"#include <metal_stdlib> \n #include <simd/simd.h> \n using namespace metal; struct LogoData { float4 position [[position]]; }; struct Transform { float4 matrix; }; vertex LogoData loadLogoVertex(constant LogoData *vertices [[buffer(0)]], constant Transform *transform [[buffer(1)]], uint vid [[vertex_id]]) { LogoData out; out.position = vertices[vid].position * transform->matrix; return out; }\n fragment float4 loadLogoFragment(LogoData inData [[stage_in]]) { return float4(0,0.75,1,1); }";
    
    return str;
}

Metal 開(kāi)發(fā)游戲

正在編寫(xiě) preview1.0 大致是一個(gè)逃亡類(lèi)游戲,后續(xù)會(huì)上傳源碼

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容