C#OpenGL绘制拉伸2D纹理(不调整大小!)

C#OpenGL绘制拉伸2D纹理(不调整大小!),c#,opengl,draw,texture2d,C#,Opengl,Draw,Texture2d,我试图从这样的纹理中绘制一个按钮: 通过这种方式: //sWidth, sHeight - stretched size. Size mySize = TheSprite.MyTexture.TextureSize; OpenGL.glBindTexture(OpenGL.TextureTarget.Texture2D, TheSprite.MyTexture.MyTextureID); OpenGL.glBegin(OpenGL.BeginMode.Quads)

我试图从这样的纹理中绘制一个按钮: 通过这种方式:

    //sWidth, sHeight - stretched size.
    Size mySize = TheSprite.MyTexture.TextureSize;
    OpenGL.glBindTexture(OpenGL.TextureTarget.Texture2D, TheSprite.MyTexture.MyTextureID);
    OpenGL.glBegin(OpenGL.BeginMode.Quads);
    double x = (double)TheDestination.Left;
    double y = (double)TheDestination.Top;
    double s = (double)(TheSprite.MyLocation.Left + TheSource.Left) / (double)mySize.Width + sWidth;
    double t = (double)(TheSprite.MyLocation.Top + TheSource.Top) / (double)mySize.Height + sHeight;
    double x2 = (double)TheDestination.Right + sWidth;
    double s2 = (double)(TheSprite.MyLocation.Left + TheSource.Right) / (double)mySize.Width + sWidth;
    double y2 = (double)TheDestination.Bottom + sHeight;
    double t2 = (double)(TheSprite.MyLocation.Top + TheSource.Bottom) / (double)mySize.Height + sHeight;

    OpenGL.glColor4(TheModulation);

    OpenGL.glTexCoord2d(s, t2);
    OpenGL.glVertex2d(x, y2);
    OpenGL.glTexCoord2d(s, t);
    OpenGL.glVertex2d(x, y);
    OpenGL.glTexCoord2d(s2, t);
    OpenGL.glVertex2d(x2, y);
    OpenGL.glTexCoord2d(s2, t2);
    OpenGL.glVertex2d(x2, y2);
    OpenGL.glEnd();
但就我而言,它看起来是这样的:

而不是像这样(相同的纹理):

在我的例子中,我应该如何拉伸它,而不是调整大小?

在这段代码中

OpenGL.glTexCoord2d(s, t2);
OpenGL.glVertex2d(x, y2);
OpenGL.glTexCoord2d(s, t);
OpenGL.glVertex2d(x, y);
OpenGL.glTexCoord2d(s2, t);
OpenGL.glVertex2d(x2, y);
OpenGL.glTexCoord2d(s2, t2);
OpenGL.glVertex2d(x2, y2);
将纹理的角点映射到按钮的角点,如下所示:

由于纹理是方形的,而按钮是矩形的,因此纹理将水平拉伸以适合按钮的宽度。 如果不希望在按钮侧面水平拉伸黄色框架,则在映射纹理时需要使用其他点,以便仅水平拉伸纹理的中间部分(点2-3-6-7)。像这样: