-
>
全國計算機等級考試最新真考題庫模擬考場及詳解·二級MSOffice高級應用
-
>
決戰行測5000題(言語理解與表達)
-
>
軟件性能測試.分析與調優實踐之路
-
>
第一行代碼Android
-
>
JAVA持續交付
-
>
EXCEL最強教科書(完全版)(全彩印刷)
-
>
深度學習
WebGL編程指南 版權信息
- ISBN:9787121229428
- 條形碼:9787121229428 ; 978-7-121-22942-8
- 裝幀:一般膠版紙
- 冊數:暫無
- 重量:暫無
- 所屬分類:>>
WebGL編程指南 本書特色
webgl 是一項在網頁上渲染三維圖形的技術,也是html5 草案的一部分。 《webgl編程指南》的主要篇幅講解了webgl 原生api 和三維圖形學的基礎知識,包括渲染管線、著色器、矩陣變換、著色器編程語言(glsl es)等等,也講解了使用webgl 渲染三維場景的一般技巧,如光照、陰影、霧化等等!秝ebgl編程指南》提供了豐富的示例程序供讀者鉆研,也提供了極具價值的附錄供讀者參考。 《webgl編程指南》適合有一定前端開發基礎,希望學習webgl,但對三維圖形學缺乏了解的程序員們閱讀。
WebGL編程指南 內容簡介
使用webgl,你可以在瀏覽器中,不依賴任何插件創建出精美的可交互三維圖形。webgl技術使得創建新一代3d網頁游戲、用戶界面、數據可視化方案成為可能,這些程序能夠運行任何支持標準瀏覽器的pc、智能手機、平板電腦、家用游戲機或其他設備上!秝ebgl編程指南》將會幫助你快速入門學習可交互的webgl 3d編程,即使你還不了解html5、javascript、三維圖形學理論、數學基礎和opengl也沒有關系。 你將會一步一步地學習真實的示例程序。隨著示例程序從簡單變復雜,你也將逐漸掌握使用webgl開發虛擬逼真的網頁和三維圖形的技能。多媒體、三維圖形學和webgl領域的先驅者kouichi matsuda博士和rodger lea博士在這本書中提供了易于上手、重點清晰的webgl教程,以及共計100個可下載的示例程序,每個程序都討論了一個具體的webgl話題。 你將從*基本的技術比如渲染、動畫、為三角形貼上紋理開始,一路學習到高級的webgl技術,比如霧化、陰影、切換著色器、顯示由blender等建模工具創建的三維模型。這本書并不僅僅向你傳授*佳的實踐方法,同時也會向你提供一個小型的代碼庫,方便你在學習完本書后,開始編寫自己的程序。 本書的內容包括: √ webgl的起源、核心概念、特性、優勢以及與其他web標準的結合; √ canvas和基本的webgl函數如何協作以顯示三維圖形; √ 使用opengl es著色器語言(glsl es)編寫著色器代碼; √ 三維場景渲染:表示用戶視野、控制可視空間、裁剪、三維對象創建、透視; √ 通過光照和層次結構模型產生更真實的效果; √ 高級技巧:對象操作,hud、混合、著色器切換等等; √ 極具價值的附錄,涵蓋了從坐標系統到矩陣、從著色器加載到瀏覽器設置等諸多關鍵知識點。
WebGL編程指南 目錄
第1 章 webgl 概述
webgl 的優勢
使用文本編輯器開發三維應用
輕松發布三維圖形程序
充分利用瀏覽器的功能
學習和使用webgl 很簡單
webgl 的起源
webgl 程序的結構
總結
第2 章 webgl 入門
canvas 是什么?
使用標簽
drawrectanglejs
*短的webgl 程序:清空繪圖區
html 文件(hellocanvashtml)
javascript 程序(hellocanvasjs)
用示例程序做實驗
繪制一個點(版本1)
hellopoint1html
hellopoint1js
著色器是什么?
使用著色器的webgl 程序的結構
初始化著色器
頂點著色器
片元著色器
繪制操作
webgl 坐標系統
用示例程序做實驗
繪制一個點(版本2)
使用attribute 變量
示例程序(hellopoint2js)
獲取attribute 變量的存儲位置
向attribute 變量賦值
glvertexattrib3f() 的同族函數
用示例程序做實驗
通過鼠標點擊繪點
示例程序(clickedpointsjs)
注冊事件響應函數
響應鼠標點擊事件
用示例程序做實驗
改變點的顏色
示例程序(coloredpointsjs)
uniform 變量
獲取uniform 變量的存儲地址
向uniform 變量賦值
gluniform4f() 的同族函數
總結
第3 章 繪制和變換三角形
繪制多個點
示例程序(multipointjs)
使用緩沖區對象
創建緩沖區對象(glcreatebuffer())
綁定緩沖區(glbindbuffer())
向緩沖區對象中寫入數據(glbufferdata())
類型化數組
將緩沖區對象分配給attribute 變量(glvertexattribpointer())
開啟attribute 變量(glenablevertexattribarray())
gldrawarrays() 的第2 個和第3 個參數
用示例程序做實驗
hello triangle
示例程序(hellotrianglejs)
基本圖形
用示例程序做實驗
hello rectangle(helloquad)
用示例程序做實驗
移動、旋轉和縮放
平移
示例程序(translatedtrianglejs)
旋轉
示例程序(rotatedtrianglejs)
變換矩陣:旋轉
變換矩陣:平移
4×4 的旋轉矩陣
示例程序(rotatedtriangle_matrixjs)
平移:相同的策略
變換矩陣:縮放
總結
第4 章 高級變換與動畫基礎
平移,然后旋轉
矩陣變換庫:cuon-matrixjs
示例程序(rotatedtriangle_matrix4js)
復合變換
示例程序(rotatedtranslatedtrianglejs)
用示例程序做實驗
動畫
動畫基礎
示例程序(rotatingtrianglejs)
反復調用繪制函數(tick())
按照指定的旋轉角度繪制三角形(draw())
請求再次被調用(requestanimationframe())
更新旋轉角(animate())
用示例程序做實驗
總結
第5 章 顏色與紋理
將非坐標數據傳入頂點著色器
示例程序(multiattributesizejs)
創建多個緩沖區對象
glvertexattribpointer() 的步進和偏移參數
示例程序(multiattributesize_interleavedjs)
修改顏色(varying 變量)
示例程序(multiattributecolorjs)
用示例程序做實驗
彩色三角形(coloredtrianglejs)
幾何形狀的裝配和光柵化
調用片元著色器
用示例程序做實驗
varying 變量的作用和內插過程
在矩形表面貼上圖像
紋理坐標
將紋理圖像粘貼到幾何圖形上
示例程序(texturedquadjs)
設置紋理坐標(initvertexbuffers())
配置和加載紋理(inittextures())
為webgl 配置紋理(loadtexture())
圖像y 軸反轉
激活紋理單元(glactivetexture())
綁定紋理對象(glbindtexture())
配置紋理對象的參數(gltexparameteri())
將紋理圖像分配給紋理對象(glteximage2d())
將紋理單元傳遞給片元著色器(gluniform1i())
從頂點著色器向片元著色器傳輸紋理坐標
在片元著色器中獲取紋理像素顏色(texture2d())
用示例程序做試驗
使用多幅紋理
示例程序(multitexturejs)
總結
第6 章 opengl es 著色器語言(glsl es)
回顧:基本著色器代碼
glsl es 概述
你好,著色器!
基礎
執行次序
注釋
數據值類型(數值和布爾值)
變量
glsl es 是強類型語言
基本類型
賦值和類型轉換
運算符
矢量和矩陣
賦值和構造
訪問元素
運算符
結構體
賦值和構造
訪問成員
運算符
數組
取樣器(紋理)
運算符優先級
程序流程控制:分支和循環
if 語句和if-else 語句
for 語句
continue、break 和discard 語句
函數
規范聲明
參數限定詞
內置函數
全局變量和局部變量
存儲限定字
const 變量
attribute 變量
uniform 變量
varying 變量
精度限定字
預處理指令
總結
第7 章 進入三維世界
立方體由三角形構成
視點和視線
視點、觀察目標點和上方向
示例程序(lookattrianglesjs)
lookattrianglesjs 與rotatedtriangle_matrix4js
從指定視點觀察旋轉后的三角形
示例程序(lookatrotatedtrianglesjs)
用示例程序做實驗
利用鍵盤改變視點
示例程序(lookattriangleswithkeysjs)
獨缺一角
可視范圍(正射類型)
可視空間
定義盒狀可視空間
示例程序(orthoviewhtml)
示例程序(orthoviewjs)
javascript 修改html 元素
頂點著色器的執行流程
修改near 和far 值
補上缺掉的角(lookattriangleswithkeys_viewvolumejs)
用示例程序做實驗
可視空間(透視投影)
定義透視投影可視空間
示例程序(perspectiveviewjs)
投影矩陣的作用
共冶一爐(模型矩陣、視圖矩陣和投影矩陣)
示例程序(perspectiveview_mvpjs)
用示例程序做實驗
正確處理對象的前后關系
隱藏面消除
示例程序(depthbufferjs)
深度沖突
立方體
通過頂點索引繪制物體
示例程序(hellocubejs)
向緩沖區中寫入頂點的坐標、顏色與索引
為立方體的每個表面指定顏色
示例程序(coloredcubejs)
用示例程序做實驗
總結
第8 章 光照
光照原理
光源類型
反射類型
平行光下的漫反射
根據光線和表面的方向計算入射角
法線:表面的朝向
示例程序(lightedcubejs)
環境光下的漫反射
示例程序(lightedcube_ambientjs)
運動物體的光照效果
魔法矩陣:逆轉置矩陣
示例程序(lightedtranslatedrotatedcubejs)
點光源光
示例程序(pointlightedcubejs)
更逼真:逐片元光照
示例程序(pointlightedcube_perfragmentjs)
總結
第9 章 層次模型
多個簡單模型組成的復雜模型
層次結構模型
單關節模型
示例程序(jointmodejs)
繪制層次模型(draw())
多節點模型
示例程序(multijointmodeljs)
繪制部件(drawbox())
繪制部件(drawsegments())
著色器和著色器程序對象:initshaders() 函數的作用
創建著色器對象(glcreateshader())
指定著色器對象的代碼(glshadersource())
編譯著色器(glcompileshader())
創建程序對象(glcreateprogram())
為程序對象分配著色器對象(glattachshader())
連接程序對象(gllinkprogram())
告知webgl 系統所使用的程序對象(gluseprogram())
initshaders() 函數的內部流程
總結
第10 章 高級技術
用鼠標控制物體旋轉
如何實現物體旋轉
示例程序(rotateobjectjs)
選中物體
如何實現選中物體
示例程序(pickobjectjs)
選中一個表面
示例程序(pickfacejs)
hud(平視顯示器)
如何實現hud
示例程序(hudhtml)
示例程序(hudjs)
在網頁上方顯示三維物體
霧化(大氣效果)
如何實現霧化
示例程序(fogjs)
使用w 分量(fog_wjs)
繪制圓形的點
如何實現圓形的點
示例程序(roundedpointjs)
α 混合
如何實現α 混合
示例程序(lookatblendedtrianglesjs)
混合函數
半透明的三維物體(blendedcubejs)
透明與不透明物體共存
切換著色器
如何實現切換著色器
示例程序(programobjectjs)
渲染到紋理
幀緩沖區對象和渲染緩沖區對象
如何實現渲染到紋理
示例程序(framebufferobjectjs)
創建幀緩沖區對象(glcreateframebuffer())
創建紋理對象并設置其尺寸和參數
創建渲染緩沖區對象(glcreaterenderbuffer())
綁定渲染緩沖區并設置其尺寸(glbindrenderbuffer(),
glrenderbufferstorage())
將紋理對象關聯到幀緩沖區對象(glbindframebuffer(),
glframebuffertexture2d())
將渲染緩沖區對象關聯到幀緩沖區對象(glframebufferrenderbuffer())
檢查幀緩沖區的配置(glcheckframebufferstatus())
在幀緩沖區進行繪圖
繪制陰影
如何實現陰影
示例程序(shadowjs)
提高精度
示例程序(shadow_highpjs)
加載三維模型
obj 文件格式
mtl 文件格式
示例程序(objviewerjs)
自定義類型對象
示例程序(objviewerjs 解析數據部分)
響應上下文丟失
如何響應上下文丟失
示例程序(rotatingtriangle_contextlostjs)
總結
附錄a webgl 中無須交換緩沖區
附錄b glsl es 10 內置函數
角度和三角函數
指數函數
通用函數
幾何函數
矩陣函數
矢量函數
紋理查詢函數
附錄c 投影矩陣
正射投影矩陣
透視投影矩陣
附錄d webgl/opengl :左手還是右手坐標系?
示例程序(coordinatesystemjs)
隱藏面消除和裁剪坐標系統
裁剪坐標系和可視空間
什么是對的?
總結
附錄e 逆轉置矩陣
附錄f 從文件中加載著色器
附錄g 世界坐標系和本地坐標系
本地坐標系
世界坐標系
變換與坐標系
附錄h webgl 的瀏覽器設置
WebGL編程指南 相關資料
“webgl 提供了用以在瀏覽器中創建‘具有桌面應用體驗’的應用的最終特性,而《webgl 編程指南》將教會你如何創建這些應用。這本書涵蓋了使用webgl 的方方面面——javascript、opengl es,以及基礎的圖形學技術——如果你想上手webgl,這本書里有你需要的一切。web 應用是未來的趨勢,這本書將讓你走在潮流的前端!”
——dave shreiner
《opengl 編程指南》( 第8 版) 的作者,addison wesley 出版社opengl 系列叢書編輯
“html5 使web 成為了高度可用的應用平臺,使精致優美的web 應用能夠運行在多種不同的系統中。webgl 是html5 的一個重要組成部分,它允許web 開發者充分利用硬件的性能渲染三維圖形。webgl 被設計出來的目的就是為了安全地運行在任何支持web 的系統中,這項技術將在三維web 內容和應用、用戶界面等領域引發新一輪的技術
革命。這本書將幫助web 開發者完全理解webgl 技術的功能,并牢牢抓住這項技術帶來的機遇!
——neil trevett
nvidia 移動部門副總裁,khronos 小組主席
“通過優美的三維渲染和清晰的講解,這本書將webgl 這樣一個復雜晦澀的問題變得親切有趣。不可否認的是,webgl 確實非常復雜,但這本書已經足夠暢達,初學者應該毫不猶豫地利用它開始學習。”
——evan burchard
web game developer's cookbook (addison wesley) 的作者
“本書的兩位作者都具有深厚的opengl 背景,并將此背景恰到好處地用在了webgl 上,寫出了這本優秀的,即適合新手也適合老鳥的教材!
——daniel heahn
波士頓兒童醫院的軟件工程師
“《webgl 編程指南》以一種即直接又通俗易懂的方式,講解了如何不依賴笨重的函數庫或插件來構建三維應用。對希望了解最前沿的三維web 開發領域的工程師來說,這是一本不可多得的好書!
——brandon jones
google 的軟件工程師
“這是一部出自杰出科學家之手的偉大作品。kouichi matsuda 清晰簡潔地向初學者指明了理解webgl 所需經歷的道路。這是一個復雜的話題,使得每一個剛開始使用這項新技術的人都能夠理解。這本書包括了很多三維的基本概念,以幫助讀者理解后面的知識。對任何一個web 開發者來說,這本書都值得收藏!
——chris marrin
webgl spec 編輯
“學習《webgl 編程指南》是從webgl 菜鳥到webgl 專家的絕佳途徑。webgl 雖然概念上很簡單,但真正使用它需要大量3d 數學知識,《webgl 編程指南》系統地幫你總結了這些知識,你只需要好好理解它們并運用到實際開發中去。即使你最后還是選擇使用webgl 3d 庫,《webgl 編程指南》里學到的知識也會幫助你理解那些庫究竟在做些什么,并允許你將它們進行改造,以適應你的應用的特殊要求。真見鬼,你最終還是堅持使用opengl 和/ 或directx 編寫桌面程序?即使這樣,《webgl 編程指南》也是一本不錯的入門書,因為市面上大多關于3d 的書籍,與目前的3d 技術相比都已經過時了?傊,《webgl 編程指南》將幫助你完整理解關于現代3d 圖形學的基礎知識!
——gregg tavares
google 的軟件工程師,chrome 瀏覽器webgl 系統的實現者
WebGL編程指南 作者簡介
關于作者 Kouichi Matsuda 博士是多媒體產品用戶界面和用戶體驗設計方面的專家。他先后供職于日本電氣(NEC)、索尼(Sony) 研發中心、索尼(Sony) 計算機科學實驗室,曾經做過產品研發,也做過科學研究,最終回到產品研發的崗位。目前,他是用戶體驗和人機交互領域的首席研究員,負責多款消費類電子產品的設計。他曾經設計了社交三維虛擬世界“PAW”,也曾經參與過VRML97(ISO/IEC 14772-1:1997) 標準的開發工作,在VRML和X3D(WebGL 的前身) 社區中仍然非;钴S。他撰寫過15 本計算機技術的書籍,并翻譯過25 本相關書籍。他專長于用戶體驗、用戶界面、人機交互、自然語言處理和面向娛樂的網絡設備,以及接口代理系統等領域。他不僅對技術領域的新鮮事物充滿熱情,還熱衷于溫泉、夏季的海灘、紅酒和漫畫(為此他已經沉迷于繪制插畫一段時間了)。他在東京大學工程系獲得了博士學位,你可以通過WebGL.prog.guide@gmail.com 聯系他。 Rodger Lea 博士是卑詩大學媒體與圖像跨學科中心的兼職教授,對多媒體和分布式計算等領域很感興趣。他和他帶領的研究小組在學術和工業領域耕耘超過20 年,參與制定了VRML97 標準,開發了多媒體操作系統、可交互數字電視原型,并領導了家用多媒體網絡標準的制定工作。他發表了60 多篇學術論文,著有3 本技術書籍,并擁有12 項專利。目前,他的研究集中在探索發展中的互聯網,但他仍然對有關多媒體和圖形學的一切抱有熱情。 關于譯者 謝光磊,畢業于南京大學,目前為中科院在讀碩士,即將成為淘寶UED 的一名前端工程師。因一次偶然的機會接觸WebGL 而對其萌生興趣,并愿意持久深入地研究這項技術。個人站點為 www.xieguanglei.com。
- >
隨園食單
- >
我從未如此眷戀人間
- >
我與地壇
- >
中國歷史的瞬間
- >
羅曼·羅蘭讀書隨筆-精裝
- >
名家帶你讀魯迅:故事新編
- >
姑媽的寶刀
- >
苦雨齋序跋文-周作人自編集