【发布时间】:2014-10-08 17:26:46
【问题描述】:
如果我能制作这些,我将用草、树和其他东西制作 2D 冒险游戏。我的问题是,当我使用 glTexCoord2f 将纹理钳制为四边形时,它们彼此分离大约 25 个像素。这些四边形应该像任何 2D 游戏一样连接在一起。
我用 SlickUtil 加载它们,纹理的大小是 100x100
这是我渲染四边形和 InitGL 的源代码
public static void Render(){
example--;
GL11.glLoadIdentity();
Color.white.bind();
system.Game.ground.bind();
GL11.glTranslatef(example, 0, 0);
//I used for loop for cloning quad at each side.
for(int x = 0; x <= width; x++){
GL11.glBegin(GL11.GL_QUADS);
GL11.glTexCoord2f(0, 0);
GL11.glVertex2f(x * 100, 0);
GL11.glTexCoord2f(1, 0);
GL11.glVertex2f(x * 100 + 100, 0);
GL11.glTexCoord2f(1, 1);
GL11.glVertex2f(x * 100 + 100, 100);
GL11.glTexCoord2f(0, 1);
GL11.glVertex2f(x * 100, 100);
GL11.glEnd();
}
GL11.glLoadIdentity();
}
这是我的 InitGL 代码。
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glClearColor(0.0f, 0.0f, 0.0f, 0.0f);
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glViewport(0,0,width,height);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
GL11.glMatrixMode(GL11.GL_PROJECTION);
GL11.glLoadIdentity();
GL11.glOrtho(0, width, height, 0, 1, -1);
GL11.glMatrixMode(GL11.GL_MODELVIEW);
【问题讨论】:
-
您可以从不使用固定功能管道开始,而是使用着色器和 VBO
-
你的纹理尺寸是多少?你是如何加载它们的?这听起来可能是一个常见问题,您使用的库将纹理大小四舍五入为 2 的幂,而您的实际纹理大小不是 2 的幂。
-
看起来你试图在你的问题中包含一个截图,但有些事情搞砸了......你能在你的问题中对
![][1]做点什么吗?如果您链接到屏幕截图,我可以为您嵌入。 -
问题是我没有足够的声誉来包含图像。