STDMETHODIMP CADOTier::ParamQuery(BSTR query, long idx1, BSTR idx2, BSTR idx3) { HRESULT hr = ChangeParameter(0, adInteger, (_variant_t) idx1, adParamInput, -1); if (SUCCEEDED(hr)) hr = ChangeParameter(1, adVarChar, (_variant_t) idx2, adParamInput, 25); if (SUCCEEDED(hr)) hr = ChangeParameter(2, adVarChar, (_variant_t) idx3, adParamInput, 80); if (SUCCEEDED(hr)) hr = m_command->put_CommandText(query); _Recordset* prec = 0; if (SUCCEEDED(hr)) hr = m_command->Execute(pvtEmpty, pvtEmpty2, adCmdText, &prec); if (SUCCEEDED(hr)) prec->Release(); return hr; }
STDMETHODIMP CADOTier::CallStoredProc(long idx1, BSTR idx2, BSTR idx3) { HRESULT hr = ChangeParameter(0, adInteger, (_variant_t) idx1, adParamInput, 4); if (SUCCEEDED(hr)) hr = ChangeParameter(1, adVarChar, (_variant_t) idx2, adParamInput, 25); if (SUCCEEDED(hr)) hr = ChangeParameter(2, adVarChar, (_variant_t) idx3, adParamInput, 80); if (SUCCEEDED(hr)) hr = m_command->put_CommandText(L"{call MyProc (?, ?, ?)}"); _Recordset* prec = 0; if (SUCCEEDED(hr)) hr = m_command->Execute(pvtEmpty, pvtEmpty2, adCmdText, &prec); if (SUCCEEDED(hr)) prec->Release(); return hr; }
bool OGLSimpleLighting::Init(int windowWidth, int windowHeight) { bool res = gs::Stage::Init(windowWidth, windowHeight); if (res) { res &= InitGUI(); // Program textured objects setup auto vertexShader = std::make_unique<gs::Shader>(GL_VERTEX_SHADER); auto programTex = std::make_shared<gs::Program>(); vertexShader->SetSource("simpleLighting.vert"); res &= vertexShader->Compile(); programTex->Attach(vertexShader->get()); auto fragmentShader = std::make_unique<gs::Shader>(GL_FRAGMENT_SHADER); fragmentShader->SetSource("simpleLighting.frag"); res &= fragmentShader->Compile(); programTex->Attach(fragmentShader->get()); res &= programTex->Link(); programTex->Use(); programs.push_back(programTex); mvpLocation = glGetUniformLocation(programTex->get(), "MVP"); normalMatrixLocation = glGetUniformLocation(programTex->get(), "NormalMatrix"); light.direction = glm::vec3(-1.0f, 0.0f, 0.0f); light.ambientColor = glm::vec3(0.2f); light.diffuseColor = glm::vec3(1.0f); light.specularColor = light.diffuseColor; lightDirLoc = glGetUniformLocation(programTex->get(), "light.direction"); diffuseLoc = glGetUniformLocation(programTex->get(), "light.diffuseColor"); ambientLoc = glGetUniformLocation(programTex->get(), "light.ambientColor"); //Texture setup auto textureFloor = std::make_unique<gs::Texture>(IMAGE_TYPE::GLI); res &= textureFloor->LoadTexture("Floor.dds"); textureFloor->ChangeParameter(GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_LINEAR); textureFloor->ChangeParameter(GL_TEXTURE_MAG_FILTER, GL_LINEAR); textures.push_back(std::move(textureFloor)); auto textureCamouflage = std::make_unique<gs::Texture>(IMAGE_TYPE::GLI); res &= textureCamouflage->LoadTexture("Hieroglyphes.dds"); textures.push_back(std::move(textureCamouflage)); // Geometry setup auto vao = std::make_unique<gs::VertexArray>(); vao->BindVAO(); vaos.push_back(std::move(vao)); auto vbo = std::make_unique<gs::VertexBuffer>(GL_ARRAY_BUFFER); vbo->BindVBO(); std::vector<gs::Vertex> vertices; OGLCube cube; cube.InitVertices(glm::vec3(0)); vertices.insert(vertices.end(), cube.GetVertices().begin(), cube.GetVertices().end()); OGLQuad quad; quad.SetSize(1000); quad.InitVertices(glm::vec3(0)); vertices.insert(vertices.end(), quad.GetVertices().begin(), quad.GetVertices().end()); glBufferData(GL_ARRAY_BUFFER, sizeof(gs::Vertex) * vertices.size(), vertices.data(), GL_STATIC_DRAW); vbos.push_back(std::move(vbo)); glEnableVertexAttribArray(0); glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(gs::Vertex), (void*)offsetof(gs::Vertex, position)); glEnableVertexAttribArray(1); glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, sizeof(gs::Vertex), (void*)offsetof(gs::Vertex, texCoords)); glEnableVertexAttribArray(2); glVertexAttribPointer(2, 3, GL_FLOAT, GL_FALSE, sizeof(gs::Vertex), (void*)offsetof(gs::Vertex, normal)); // Camera setup camera.SetPosition(glm::vec3(0.0f, 0.0f, 3.0f)); camera.SetSpeed(8.0f); camera.SetupProjection(45.0f, windowWidth/(float)windowHeight); lightObj.Load(""); // OpenGL setup glEnable(GL_DEPTH_TEST); } return res; }