| @@ -27,6 +27,7 @@ using namespace lol; | |||||
| #if defined _WIN32 | #if defined _WIN32 | ||||
| # undef main /* FIXME: still needed? */ | # undef main /* FIXME: still needed? */ | ||||
| # include <direct.h> | |||||
| #endif | #endif | ||||
| class Fractal : public WorldEntity | class Fractal : public WorldEntity | ||||
| @@ -114,18 +115,40 @@ public: | |||||
| /* FIXME: this object never cleans up */ | /* FIXME: this object never cleans up */ | ||||
| } | } | ||||
| m_angle += deltams * 0.001f; | |||||
| m_angle += deltams * 0.0001f; | |||||
| cmplx r0(cosf(m_angle), 0.3f * sinf(m_angle)); | |||||
| cmplx r0(cosf(m_angle), 0.5f * sinf(m_angle)); | |||||
| for (int j = 0; j < m_size.y; j++) | for (int j = 0; j < m_size.y; j++) | ||||
| for (int i = 0; i < m_size.x; i++) | for (int i = 0; i < m_size.x; i++) | ||||
| { | { | ||||
| cmplx x0(4.0f / m_size.x * i - 2.5f, 3.0f / m_size.y * j - 1.5f); | cmplx x0(4.0f / m_size.x * i - 2.5f, 3.0f / m_size.y * j - 1.5f); | ||||
| cmplx r = x0 * r0; | cmplx r = x0 * r0; | ||||
| cmplx z; | |||||
| int iter = 20; | int iter = 20; | ||||
| for (cmplx z = r; iter && z.sqlen() < 4.0f; z = z * z + r) | |||||
| for (z = r; iter && z.sqlen() < 4.0f; z = z * z + r) | |||||
| --iter; | --iter; | ||||
| m_pixels[j * m_size.x + i] = u8vec4(0, iter * 12, iter * 12, 0); | |||||
| float f = iter; | |||||
| float n = z.sqlen(); | |||||
| if (n > 36.0f) | |||||
| f += 2.0f; | |||||
| if (n > 16.0f) | |||||
| f += 1.0f + (n - 16.0f) / 20.0f; | |||||
| else if (n > 4.0f) | |||||
| f += (n - 4.0f) / 12.0f; | |||||
| if (iter) | |||||
| { | |||||
| uint8_t red = 255 - f * 11; | |||||
| uint8_t green = 255 - f * 11; | |||||
| uint8_t blue = (f * 23 > 255) ? 511 - f * 23 : 255; | |||||
| //uint8_t blue = f * 36 < 255 ? f * 36 : 255; | |||||
| m_pixels[j * m_size.x + i] = u8vec4(red, green, blue, 0); | |||||
| } | |||||
| else | |||||
| { | |||||
| m_pixels[j * m_size.x + i] = u8vec4(0, 0, 0, 0); | |||||
| } | |||||
| } | } | ||||
| glEnable(GL_TEXTURE_2D); | glEnable(GL_TEXTURE_2D); | ||||
| @@ -185,6 +208,10 @@ private: | |||||
| int main() | int main() | ||||
| { | { | ||||
| #if defined _WIN32 | |||||
| _chdir("../.."); | |||||
| #endif | |||||
| Application app("Tutorial 3: Fractal", ivec2(640, 480), 60.0f); | Application app("Tutorial 3: Fractal", ivec2(640, 480), 60.0f); | ||||
| new DebugFps(5, 5); | new DebugFps(5, 5); | ||||