画像で私の問題を説明しようとします。だから、これは私が私のOpenGLアプリケーションのために使用していた試験食感です:テクスチャが正しく表示されない - おそらく座標が間違っているOpenGL、C++
あなたが見ることができるように私が見ることができるようにするために、異なる色と画像の周囲2ピクセル幅の境界線があります私のアプリケーションで座標が正しく設定されていれば
私は9セルのパターンを使用しているので、特定のテクスチャ座標を持つ9つの四角形を描画しています。一見、すべてでは正常に動作しますが、小さな問題は、テクスチャを表示してあります:最初のクワッドである私はマークされた画像で
を、どこ秒1です。あなたが見ることができるように、最初のものは正しく表示されますが、2番目のものは最初のクワッドの色からそれ自身のものにスムーズに移行しますが、純粋な緑とピンクから始める必要があります。だから私はテクスチャ座標の問題だと思っています。
これは、彼らが設定されている方法です。
// Bottom left quad [1st quad]
glBegin(GL_QUADS);
// Bottom left
glTexCoord2f(0.0f, 1.0);
glVertex2i(pos.x, pos.y + height);
// Top left
glTexCoord2f(0.0f, (GLfloat)1.0 - maxTexCoordBorderY);
glVertex2i(pos.x, pos.y + height - m_borderWidth);
// Top right
glTexCoord2f(maxTexCoordBorderX, (GLfloat)1.0 - maxTexCoordBorderY);
glVertex2i(pos.x + m_borderWidth, pos.y + height - m_borderWidth);
// Bottom right
glTexCoord2f(maxTexCoordBorderX, 1.0);
glVertex2i(pos.x + m_borderWidth, pos.y + height);
glEnd();
// Bottom middle quad [2nd quad]
glBegin(GL_QUADS);
// Bottom left
glTexCoord2f(maxTexCoordBorderX, 1.0);
glVertex2i(pos.x + m_borderWidth, pos.y + height);
// Top left
glTexCoord2f(maxTexCoordBorderX, (GLfloat)1.0 - maxTexCoordBorderY);
glVertex2i(pos.x + m_borderWidth, pos.y + height - m_borderWidth);
// Top right
glTexCoord2f((GLfloat)1.0 - maxTexCoordBorderX, (GLfloat)1.0 - maxTexCoordBorderY);
glVertex2i(pos.x + width - m_borderWidth, pos.y + height - m_borderWidth);
// Bottom right
glTexCoord2f((GLfloat)1.0 - maxTexCoordBorderX, 1.0);
glVertex2i(pos.x + width - m_borderWidth, pos.y + height);
glEnd();
あなたは、私が国境や画像サイズに基づいて計算されmaxTexCoordBorderX
変数を使用していることがわかります。画像の幅は32で、境界線の幅は、問題がどこにあるか見つけるとで2
maxTexCoordBorderX
= 2/32 = 0.0625
誰が助けてもらえますか?
が答えジェイソンいただきありがとうございますここにあなたの非常に問題に解決策に答えが、あなたは私を説明できますか? –
私は概略図で更新しました。 – JasonD
ありがとう、ジェイソン、それは私の問題を解決! –