void RenderThread::preStart() { const size_t gridSize = sizeof(bool) * (renderDistance * 2 + 1) * (renderDistance * 2 + 1) * (renderDistance * 2 + 1); commandQueue.create(); projectionMatrixBuffer.create(sizeof(float) * 16, CL_MEM_READ_ONLY); gridBuffer.create(gridSize, CL_MEM_WRITE_ONLY); boolBuffer.create(sizeof(unsigned char) * (renderDistance * 2 + 2) * (renderDistance * 2 + 2) * (renderDistance * 2 + 2), CL_MEM_READ_WRITE); std::wstring filePath(IOUtil::EXE_DIR); filePath += L"\\programs\\frustumclip.cl"; program.create(filePath); grid = new VertexStream(); for(int i = -8; i <= 8; i++) { for(int j = -8; j <= 8; j++) { grid->put(Vertex(i, j, -8)); grid->put(Vertex(i, j, 8)); grid->put(Vertex(i, -8, j)); grid->put(Vertex(i, 8, j)); grid->put(Vertex(-8, i, j)); grid->put(Vertex(8, i, j)); } } square = new VertexStream(); square->put(Vertex(0.0f, 0.0f, 0.0f)); square->put(Vertex(1.0f, 0.0f, 0.0f)); square->put(Vertex(1.0f, 0.0f, 1.0f)); square->put(Vertex(1.0f, 0.0f, 1.0f)); square->put(Vertex(0.0f, 0.0f, 1.0f)); square->put(Vertex(0.0f, 0.0f, 0.0f)); GLWindow::instance->initGL(); if(!GLWindow::instance->isOK()) { return; } filePath = IOUtil::EXE_DIR; filePath += L"\\shaders\\normal.vert"; normalVShader = new gfxu::VertexShader(filePath); filePath = IOUtil::EXE_DIR; filePath += L"\\shaders\\normal.frag"; normalFShader = new gfxu::FragmentShader(filePath); normalShaderProgram = new gfxu::ShaderProgram(normalVShader, nullptr, normalFShader); filePath = IOUtil::EXE_DIR; filePath += L"\\shaders\\noTex.vert"; noTexVShader = new gfxu::VertexShader(filePath); filePath = IOUtil::EXE_DIR; filePath += L"\\shaders\\noTex.frag"; noTexFShader = new gfxu::FragmentShader(filePath); noTexShaderProgram = new gfxu::ShaderProgram(noTexVShader, nullptr, noTexFShader); gfxu::Uniforms::reset(); glEnable(GL_DEPTH_TEST); glEnable(GL_CULL_FACE); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); }