提示コードの////コメント部ですがUV座標画像のサイズで割ってここからここまでといった感じで切り抜いて描画したいのですが上手く描画されません画像のUV座標を使って切り抜くにはどうすればいいのでしょうか?
cpp
1 2//描画 3void FrameWork::Sprite::DrawGraph(glm::vec2 pos, unsigned char texNum,float r,glm::vec2 s,glm::vec2 startSize,glm::vec2 endSize) 4{ 5 if (isDefaultShader == true) 6 { 7 setEnable(); 8 } 9 10 //UVサイズからピクセルサイズを算出 11 float sizeX = 1.0f / textureID.at(textureNumber).size.x; 12 float sizeY = 1.0f / textureID.at(textureNumber).size.y; 13 14 ////////////////////////////////////////////////////////////////////////////////////////////////// 15 //左上 16 rectangleVertex[0].uv[0] = sizeX * startSize.x; 17 rectangleVertex[0].uv[1] = 1.0f - (sizeY * startSize.y); 18 19 //左下 20 rectangleVertex[1].uv[0] = sizeX * startSize.x; 21 rectangleVertex[1].uv[1] = 1.0f - sizeY * ((endSize.y - startSize.y) + startSize.y); 22 rectangleVertex[4].uv[0] = sizeX * startSize.x; 23 rectangleVertex[4].uv[1] = 1.0f - sizeY * ((endSize.y - startSize.y) + startSize.y); 24 25 //右上 26 rectangleVertex[2].uv[0] = sizeX * endSize.x; 27 rectangleVertex[2].uv[1] = 1.0f - sizeY * ((startSize.y - endSize.y) - endSize.y); 28 rectangleVertex[3].uv[0] = sizeX * endSize.x; 29 rectangleVertex[3].uv[1] = 1.0f - sizeY * ((startSize.y - endSize.y) - endSize.y); 30 31 //右下 32 rectangleVertex[5].uv[0] = sizeX * endSize.x; 33 rectangleVertex[5].uv[1] = 1.0f - sizeY * endSize.y; 34 35 glBufferSubData(GL_ARRAY_BUFFER,0,sizeof(Transform_2D::VertexUV) * 6,rectangleVertex); //頂点データを再変更 36 ///////////////////////////////////////////////////////////////////////////////////////////////////////// 37 38 setDrawTextureID((unsigned char)texNum); //テクチャーユニットを設定 39 glBindVertexArray(vao); 40 glBindTexture(GL_TEXTURE_2D, textureID.at(texNum).ID); 41 42 43 // Transform 44 setTranslate(glm::vec3(pos.x + (textureID.at(texNum).size.x / 2.0f), pos.y + (textureID.at(texNum).size.y / 2.0f), 0.0f)); //平行移動 45 setRotate(r); //回転 46 setScale(s); //スケール 47 48 //uniform 49 setUniformMatrix4fv("uTranslate", translate); 50 setUniformMatrix4fv("uRotate", rotate); 51 setUniformMatrix4fv("uScale", scale); 52 setUniformMatrix4fv("uViewProjection", glm::ortho(0.0f, windowContext->getSize().x, windowContext->getSize().y, 0.0f, -1.0f, 1.0f)); 53 54 glDrawArrays(GL_TRIANGLES, 0, 6); 55 56 57 glBindVertexArray(0); 58 glBindTexture(GL_TEXTURE_2D, 0); 59 60 if (isDefaultShader == true) 61 { 62 setDisable(); 63 } 64 65} 66
cpp
1 Transform_2D::VertexUV rectangleVertex[6] = 2 { 3 //頂点、頂点色 4 {-0.5f,0.5f, 0.0f,1.0f}, 5 {-0.5f,-0.5f, 0.0f,0.0f}, 6 {0.5f,0.5f, 1.0f,1.0f}, 7 8 {0.5f,0.5f, 1.0f,1.0f}, 9 {-0.5f,-0.5f, 0.0f,0.0f}, 10 {0.5f,-0.5f, 1.0f,0.0f}, 11 }; 12
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/05/09 10:10
退会済みユーザー
2021/05/09 10:59
退会済みユーザー
2021/05/10 01:09
退会済みユーザー
2021/05/10 01:59