OPENGL-ES之頂點索引繪圖
在學習OpenGLES時遇到一個概念,索引快取。網上查資料大部分程式碼均是針對安卓或者桌面平臺的,而且大部分的程式碼拷貝下來不能達到效果。經過幾天的努力,終於瞭解了索引繪圖的概念,所謂索引繪圖是一種在繪製大網格(mesh)時的一種可以高效繪圖的一種方式,普通的繪製三角形需要為每個三角形在array_buffer裡面分配三個頂點的位置,每個頂點至少需要sizeof(glfloat)*3的記憶體,其實在網格里面很多頂點都是共享的,也就是說不需要為重複的頂點再分配記憶體,需要找到一種方法為gpu指定繪圖時繪製哪一個點,這就是索引繪圖的用處。使用索引繪圖,array_buffer裡面的頂點會預設的根據頂點在頂點陣列裡面的位置設定索引,,我們在繪圖之前指定gpu繪圖的索引順序,當繪圖時呼叫gldrawelement(),gpu就可以按照我們指定的頂點順序繪圖.下面是程式碼片段,簡單的設定ViewController為GLKViewController並且設定self.view為GLKView就可以執行
GLKView *view = (GLKView *)self.view;
NSAssert([view isKindOfClass:[GLKView class]],
@"View controller's view is not a GLKView");
// Create an OpenGL ES 2.0 context and provide it to the
// view
view.context = [[EAGLContext alloc]
initWithAPI:kEAGLRenderingAPIOpenGLES2];
// Make the new context current
[EAGLContext setCurrentContext:view.context];
// Create a base effect that provides standard OpenGL ES 2.0
// Shading Language programs and set constants to be used for
// all subsequent rendering
self.baseEffect = [[GLKBaseEffect alloc] init];
self.baseEffect.useConstantColor = GL_TRUE;
self.baseEffect.constantColor = GLKVector4Make(
1.0f, // Red
1.0f, // Green
1.0f, // Blue
1.0f);// Alpha
// Set the background color stored in the current context
glClearColor(0.0f, 0.0f, 0.0f, 1.0f); // background color
// Generate, bind, and initialize contents of a buffer to be
// stored in GPU memory
glGenBuffers(1, // STEP 1
&vertexBufferID);
glBindBuffer(GL_ARRAY_BUFFER, // STEP 2
vertexBufferID);
glBufferData( // STEP 3
GL_ARRAY_BUFFER, // Initialize buffer contents
sizeof(vertices), // Number of bytes to copy
vertices, // Address of bytes to copy
GL_STATIC_DRAW); // Hint: cache in GPU memory
GLuint index;
glGenBuffers(1, &index);
glBindBuffer(GL_ELEMENT_ARRAY_BUFFER, index);
glBufferData(GL_ELEMENT_ARRAY_BUFFER, sizeof(indexs), indexs, GL_STATIC_DRAW);
相關文章
- 【Android繪圖】繪圖之基礎篇(一)Android繪圖
- python繪圖之matplotlibPython繪圖
- 點陣圖索引(轉載)索引
- markdown 繪圖利器之granphviz繪圖
- canvas繪圖之鐘表Canvas繪圖
- Python點陣圖索引學習Python索引
- Python matplotlib繪製散點圖Python
- R繪圖(7): 把散點圖的點換成扇形繪圖
- 點陣圖索引的工作原理 - Richard索引
- CAD繪圖工具中的點命令繪圖
- 圖形影像處理之繪圖基礎繪圖
- R繪圖(3): 散點圖新增文字註釋繪圖
- qt之點的繪製示例demoQT
- AI繪圖之Midjourney初體驗AI繪圖
- Flutter Canvas學習之繪圖篇FlutterCanvas繪圖
- 中國地圖繪製-點選事件地圖事件
- 使用joinjs繪製流程圖(七)-實戰-繪製流程圖+節點設定樣式+節點新增事件JS流程圖事件
- ## matplotlib.pyplot庫的知識點之bar函式——繪製條形圖函式
- 第三個OpenGL程式,shaders _ 後續 之 moreAttribute (設定頂點位置屬性 顏色位置屬性),從頂點資料中傳入頂點資料,頂點顏色
- mysql索引之字首索引MySql索引
- oracle點陣圖索引對DML操作的影響Oracle索引
- 【Android自定義View】繪圖之文字篇(三)AndroidView繪圖
- 【Android自定義View】繪圖之Path篇(二)AndroidView繪圖
- [1]Python 中用 matplotlib 繪製熱點圖(heat map)Python
- PLT繪圖繪圖
- 繪圖工具繪圖
- Python 繪圖Python繪圖
- python繪圖Python繪圖
- Matlab繪圖Matlab繪圖
- win32 API程式設計之GDI繪圖Win32API程式設計繪圖
- Android原生繪圖之炫酷倒數計時Android繪圖
- 使用joinjs繪製流程圖(五)-流程圖繪製JS流程圖
- jQuery頂部帶有選項卡的焦點圖效果jQuery
- 自定義控制元件之kotlin繪製折線圖和曲線圖控制元件Kotlin
- 回到頂部效果之加速置頂
- 【C#】山脈陣列的峰頂索引C#陣列索引
- 快速繪製流程圖「GitHub 熱點速覽 v.22.47」流程圖Github
- 繪製不規則圖形並響應點選事件事件
- Matlab繪圖(2)透過程式碼進行區域性放大繪圖、多檔案繪圖Matlab繪圖