2つの立方体を持つシーンがあり、1つの立方体だけを拡大することができます。基本的には、S大文字キーを押すと、大文字のSを押し続けるほどキューブが大きくなり続けます。小文字を押すと、キューブを小さくすることができます。小文字のsを押すと長くなります。シーン内の1つのオブジェクトのみのスケーリング - OpenGL 3.0
私は2つの問題に実行している:私は押されたキーが下ケースまたは大文字であるかどうかを検出する方法がわからない
- 。
- 私のシーン全体(両方の立方体のように)は、キーを押すと拡大したり縮小したりします。
ここでは、キーの私のコードです:
void keyPressed(GLFWwindow *_window, int key, int scancode, int action, int mods) {
// Control the state of keys pressed
if (action == GLFW_PRESS)
keys[key] = true;
else if (action == GLFW_RELEASE)
keys[key] = false;
switch (key) {
case GLFW_KEY_ESCAPE: glfwSetWindowShouldClose(_window, GL_TRUE); break;
// Change between points, lines and fill
case GLFW_KEY_P: glPolygonMode(GL_FRONT_AND_BACK, getMode('P')); break;
case GLFW_KEY_W: glPolygonMode(GL_FRONT_AND_BACK, getMode('W')); break;
case GLFW_KEY_T: glPolygonMode(GL_FRONT_AND_BACK, getMode('T')); break;
case GLFW_KEY_S: scale_matrix = scale(scale_matrix, vec3(2.0f, 2.0f, 2.0f));
//model_matrix = scale(model_matrix, vec3(2.0f, 2.0f, 2.0f));
break;
case GLFW_KEY_R: scale_matrix = scale(scale_matrix, vec3(0.5f, 0.5f, 0.5f));
//model_matrix = scale(model_matrix, vec3(0.0f, 0.0f, -1.0f));
break;
//Reset camera
case GLFW_KEY_D: cameraPosition = vec3(0.0, 0.0, 1.0);
view_matrix = lookAt(
cameraPosition,
vec3(0.0f, 0.0f, -100.0f),
vec3(0.0, 1.0, 0.0));
break;
default: break;
}
return;}
私は、大文字と小文字を検出する方法については確認されませんでしたので、私は、シーンを縮小するためのキーとしてRを割り当て。これは私のキューブの位置のためのコードです:
glm::vec3 cubePositions[] = {
glm::vec3(0.0f, 0.0f, -1.0f),
glm::vec3(2.0f, 10.0f, -10.0f),
};
私はケースのためにif文を使用していたこれまでにしようとしているもの:キューブの位置を確認するためにGLFW_KEY_Sが、それは動作しませんでした。
OPは固定機能パイプラインを使用していない可能性があります。 – datenwolf