我想創建一個iPhone上的動畫Perlin雜,所以我最終可以做這樣的事情:http://dl.dropbox.com/u/1977230/example.png如何生成柏林噪聲在iPhone
我看了又看,卻找不到任何東西類似或實際顯示佩林噪聲的方法。
我被告知要查看OpenGL ES,但即使搜索Perlin噪聲或熔岩/等離子體效應的示例也不會導致任何結果。
我真的很感謝這一個幫助。
謝謝你們, 安德烈
我想創建一個iPhone上的動畫Perlin雜,所以我最終可以做這樣的事情:http://dl.dropbox.com/u/1977230/example.png如何生成柏林噪聲在iPhone
我看了又看,卻找不到任何東西類似或實際顯示佩林噪聲的方法。
我被告知要查看OpenGL ES,但即使搜索Perlin噪聲或熔岩/等離子體效應的示例也不會導致任何結果。
我真的很感謝這一個幫助。
謝謝你們, 安德烈
嗯,首先研究柏林噪聲算法本身。 http://en.wikipedia.org/wiki/Perlin_noise看起來只是最好的起飛地點。
一旦你得到了你的這種效果的RGBA數據,這個討厭的事情就開始了。
基本上有兩種選擇。
創建一個UIView子類並重寫繪製:(CGRect)方法。明智地使用Converting RGB data into a bitmap in Objective-C++ Cocoa從您的數據創建一個CGImage,然後將該圖像繪製到當前繪製的上下文中。
CGContextDrawImage(UIGraphicsGetCurrentContext(), <#CGRect rect#>, <#CGImageRef image#>);
如果這是一個靜止圖像,你沒事。如果它是動畫,這可能不是最好的解決方案。
熟悉iPhone上的OpenGL ES。 iPhone SDK的OpenGL ES示例是一個很好的起點。 研究紋理映射。一旦你熟悉glTexImage2D,使用它來加載你的圖像。
的例子可以用很容易地擴展以下:
具有這些定義:
GLuint spriteTexture;
GLubyte *spriteData; // the perlin noise will be here
size_t width, height;
然後在ESRenderer init方法爲紋理創建空間:
- (id) init { ....
width = 512; // make sure the texture size is the power of 2
height = 512;
glGenTextures(1, &spriteTexture);
glBindTexture(GL_TEXTURE_2D, spriteTexture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, spriteData);
//free(spriteData); // free this if not used any more
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
萬一定期更新噪聲,更新渲染方法中的紋理
- (void) render { .....
glBindTexture(GL_TEXTURE_2D, spriteTexture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, spriteData);
啊,我錯過了良好的舊視頻是$ A000天:)
我開始在Github的開源項目,它可以用於生成柏林噪聲。它支持完整的四維(x,y,z,t)柏林世代。它還包含一個帶有沙盒應用程序的項目,可以播放紋理想法。 http://czgarrett.com/code/2011/05/18/perlin-noise-generator-for-ios.html
現在GLSL着色器還有另一個Perlin噪聲函數,它不需要查找紋理:https://github.com/ashima/webgl-noise/tree/master/src。這應該適用於iPhone。
我明白了。感謝那。 我仍然無法相信Objective-C/OpenGL ES中沒有Perlin Noise的版本...... – Andre 2010-04-07 10:31:30
c函數和C++類可以在objc中使用。 – f3r3nc 2010-04-07 10:58:42