我目前正在研究一個允許用戶使用OpenGL ES繪製像素化圖像的應用程序,但我不知道如何實現撤消功能。 我該怎麼辦?我想爲每個像素使用圖像並將其添加到數組中。基本上,我如何存儲我用作像素的矩形?OpenGL ES:在像素繪畫應用程序中撤消
0
A
回答
1
你可以試試:
NSData *data = [NSData dataWithBytes:vertexBuffer length:vertexCount * sizeof(GL_FLOAT) * 2] ;
if (self.vertexBuffers == nil) self.vertexBuffers = [[NSMutableArray alloc] init];
[self.vertexBuffers addObject:data];
save every draw point to a array;
if undo
清除舊
buffer
glBindFramebufferOES(GL_FRAMEBUFFER_OES, viewFramebuffer); glClearColor(0.0, 0.0, 0.0, 0.0); glClear(GL_COLOR_BUFFER_BIT);
刪除點從
array;
for (int i = 0; i < 50; ++i) { [self.vertexBuffers removeLastObject]; }
渲染
for (NSData *point in self.vertexBuffers) { NSUInteger count = point.length/(sizeof(GL_FLOAT) * 2); glVertexPointer(2, GL_FLOAT, 0, point.bytes); glDrawArrays(GL_POINTS, 0, count); }
顯示
buffer
glBindRenderbufferOES(GL_RENDERBUFFER_OES, viewRenderbuffer); [context presentRenderbuffer:GL_RENDERBUFFER_OES];
其他的解決辦法: 你可以抓住從OpenGL ES的背景圖像每次你畫的東西,並保存在應用程序的捆綁作爲圖像文件。這節省了應用程序的運行內存。 按下撤消按鈕時,只需將上一個保存的圖像繪製到上下文中,就是這樣。
2
how can I store the rectangles I use as pixels?
我不確定你是否擁有基本的設置權限。你應該使用一個大紋理作爲畫布。任何用戶繪畫操作都應該隻影響這個紋理(你將用glTexSubImage2D更新)。然後在每一幀你都應該在屏幕上重繪這個紋理。
簡單的N步撤消系統將包含N個紋理/畫布的圓形列表。
相關問題
- 1. OpenGL ES簡單撤消最後繪圖
- 2. 在繪圖應用程序中撤消
- 3. 石英核心:撤消在iOS中的繪畫應用程序
- 4. 撤消在繪畫應用程序,如倒數第二和iDraft
- 5. 繪圖應用程序撤消按鈕
- 6. CGContextRef撤消繪畫?
- 7. 如何繪製OpenGL ES的iPad背景圖像應用程序
- 8. OpenGL Es 2.0 GLKit繪製像素
- 9. 使用畫布在Android繪圖應用程序中撤消和重做功能
- 10. 如何在我的iOS繪畫應用程序中實現撤消功能?
- 11. 如何在Android的繪畫應用中實現撤消功能?
- 12. 在Cocos2d/OpenGL-ES中檢查先前繪製的像素?
- 13. 單線程OpenGL ES Android應用程序
- 14. OpenGL ES交換像素
- 15. Android OpenGL es轉換像素
- 16. 繪製應用程序,使用framebuffer在OpenGL ES中渲染紋理
- 17. IPad OpenGL Es應用程序閃爍
- 18. Android,opengl ES 1.1,退出應用程序
- 19. 撤消繪圖程序的方法(Java)
- 20. 用OpenGL ES繪製點線
- 21. 如何在iPhone遊戲應用程序中使用OpenGL ES繪製動畫的直線?
- 22. 畫線用OpenGL ES 1.0
- 23. OpenGL ES 2.0程序流程
- 24. 繪畫應用的高分辨率內容在iPad設備上使用OpenGL ES
- 25. ASP.net Web應用程序撤消支持
- 26. 如何在繪圖應用程序中撤消和重做操作
- 27. 在OpenGL中繪製大量像素
- 28. 每個像素在OpenGL中繪圖
- 29. 在Android OpenGL ES應用程序中加載紋理
- 30. 在iPhone OpenGL ES應用程序中實現flipview?
撤消刪除,通常最後一個動作only.Why你叫removeLastObject 50倍? – 2012-07-19 00:37:22
有沒有人在OpenGL ES 2上做過這項工作?我有它在ES 1上工作,但是當我將它複製到ES 2時,它不起作用。我很確定它與緩衝區的重新渲染(上面的#3和$ 4)有關。任何人都能提供任何見解。當它重新渲染它不會畫出所有的顏料,但只有幾點... – 2013-11-18 17:32:24