本文整理汇总了C++中ShaderProgram::SetAspectRatio方法的典型用法代码示例。如果您正苦于以下问题:C++ ShaderProgram::SetAspectRatio方法的具体用法?C++ ShaderProgram::SetAspectRatio怎么用?C++ ShaderProgram::SetAspectRatio使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ShaderProgram
的用法示例。
在下文中一共展示了ShaderProgram::SetAspectRatio方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: WindowsSizeChanged
virtual void WindowsSizeChanged(int width, int height)
{
m_win_w = width;
m_win_h = height;
m_aspectRatio = (float)m_win_h / (float)m_win_w;
m_shaderProgram->SetAspectRatio(m_aspectRatio);
}
示例2: Init
bool Init(int argc, char** argv)
{
GetCLDev();
m_backend->Init(argc, argv);
m_aspectRatio = m_win_h / (float)m_win_w;
if (!m_backend->CreateWin(m_win_w, m_win_h, false, "OpenGL test app"))
{
fprintf(stderr, "Faild to create window");
return false;
}
GLenum res = glewInit();
if (res != GLEW_OK) {
fprintf(stderr, "Error: '%s'\n", glewGetErrorString(res));
return false;
}
if (!InitCL())
{
return false;
}
wglSwapIntervalEXT(0);
glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
//glFrontFace(GL_CW);
//glCullFace(GL_BACK);
//glEnable(GL_CULL_FACE);
//glEnable(GL_DEPTH_TEST);
m_bodies.push_back(Body(Vector2f(-0.8f, -0.8f), Vector2f(0.021f, 0.0f), Vector2f(-0.05f, 0.11f), Vector2f(0.0f, 0.0f)));
m_bodies.push_back(Body(Vector2f(0.8f, 0.8f), Vector2f(0.021f, 0.0f), Vector2f(0.05f, -0.11f), Vector2f(0.0f, 0.0f)));
m_bodies.push_back(Body(Vector2f(-0.8f, 0.8f), Vector2f(0.014f, 0.0f), Vector2f(0.01f, 0.1f), Vector2f(0.0f, 0.0f)));
m_bodies.push_back(Body(Vector2f(0.8f, -0.8f), Vector2f(0.016f, 0.0f), Vector2f(0.01f, 0.1f), Vector2f(0.0f, 0.0f)));
m_bodies.push_back(Body(Vector2f(0.0f, 0.0f), Vector2f(0.3f, 0.0f), Vector2f(0.0f, 0.0f), Vector2f(0.0f, 0.0f)));
for (int i = 0; i < 5000; ++i)
{
m_bodies.push_back(Body(Vector2f((rand() % 100000) / 1000.0f - 1.0f, (rand() % 100000) / 1000.0f - 1.0f), Vector2f(rand() % 300 / 1000.0f, 0.0f), Vector2f((rand() % 2000) / 1000.0f - 1.0f, (rand() % 2000) / 1000.0f - 1.0f), Vector2f(0.0f, 0.0f)));
}
glGenBuffers(1, &m_VB);
glBindBuffer(GL_ARRAY_BUFFER, m_VB);
glBufferData(GL_ARRAY_BUFFER, sizeof(Body) * m_bodies.size(), &m_bodies[0], GL_DYNAMIC_DRAW);
cl_int ret = 0;
m_clVB = clCreateFromGLBuffer(m_clContext, CL_MEM_READ_WRITE, m_VB, &ret);
clErrNoAssert(ret);
ret = clSetKernelArg(m_kernelCalcForces, 0, sizeof(cl_mem), (void *)&m_clVB);
clErrNoAssert(ret);
ret = clSetKernelArg(m_kernelMove, 0, sizeof(cl_mem), (void *)&m_clVB);
clErrNoAssert(ret);
m_last_time_dt = 0;
m_time_shift = 1;
m_dt = 0.00001f;
m_shaderProgram = new CommonShaderProgram("vertexshader.txt", "pixelshader.txt", "geometryshader.txt");
m_shaderProgram->Compile();
m_shaderProgram->Apply();
m_shaderProgram->SetScale(m_scale);
m_shaderProgram->SetOffset(m_offset);
m_shaderProgram->SetAspectRatio(m_aspectRatio);
return true;
}