내가 가지고있는 만델 브로는 OpenGL을 사용하기 위해 C++ 코드를 설정하지만 색상이 원하는 색상이며, 정확하지 않은 다음 나쁜 색은 C++ 및 OpenGL을
하지만이 얻을 : 를
int vala = 600;
int valb = 600;
//render one frame
void Application::render(void)
{
// Clear the window and the depth buffer
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
//render grid
Image img(vala, valb);
double MinRe = -2.0;
double MaxRe = 1.0;
double MinIm = -1.2;
double MaxIm = MinIm+(MaxRe-MinRe)*vala/valb;
double Re_factor = (MaxRe-MinRe)/(vala-1);
double Im_factor = (MaxIm-MinIm)/(valb-1);
unsigned MaxIterations = 250;
for(unsigned int y = 0; y < img.height; y++){
double c_im = MaxIm - y*Im_factor;
for(unsigned x=0; x< img.width; ++x){
double c_re = MinRe + x*Re_factor;
double Z_re = c_re, Z_im = c_im;
bool isInside = true;
for(unsigned n=0; n<MaxIterations; ++n){
double Z_re2 = Z_re*Z_re, Z_im2 = Z_im*Z_im;
if(Z_re2 + Z_im2 > 4)
{
isInside = false;
break;
}
Z_im = 2*Z_re*Z_im + c_im;
Z_re = Z_re2 - Z_im2 + c_re;
double z = sqrt(Z_re*Z_re + Z_im*Z_im);
int brightness = 256. *log(1.75 + n - log(log(z)));
img.setPixel(x,y, Color(sin(time)*brightness, sin(time/2)*brightness, brightness));
}
}
}
img.scale(this->window_width, this->window_height);
renderImage(&img);
//swap between front buffer and back buffer
SDL_GL_SwapWindow(this->window);
}
왜 이런 일이 발생하고 어떻게 수정해야하는지 알 수 있습니다.
대단히 감사합니다.
'glClear (...)'이외에 여기에는 GL 코드가 하나도 없습니다. 나는'Image' 또는'renderImage (...) '의 구현이 책임이 있다고 생각하지만 그것들은 보여지지 않습니다. GL이 아닌 이미지 파일에 직접 출력하는 경우 아무 것도 변경됩니까? –
@ AndonM.Coleman 많은 OpenGL 코드가 아닐 수도 있지만 프로그램의 나머지 부분에는 많은 행의 openGL 코드가 포함되어 있으므로 프로그램 자체가 100 % OpenGL을 지원해야합니다. Image 및 renderImage는 문제가되지 않습니다. 문제는 색상을 인쇄하는 방정식에서 비롯됩니다 ... – Gera
아, 알겠습니다. 나는 맨 위의 이미지가이 코드를 사용하여 생성되었고 그 이미지가 GL로 표시하려고 시도한 결과 인 것처럼 질문을 해석했다. –