使用大于窗口/显示大小的OpenGL纹理

使用大于窗口/显示大小的OpenGL纹理,opengl,textures,Opengl,Textures,我在使用大于OpenGL窗口或显示大小的纹理作为非显示渲染目标时遇到问题。 这个问题的解决方案是什么?有一个简单的解决方案 假设您的(非显示)纹理为1024x1024,并且限制为256x256窗口/显示 unsigned int WIN_WIDTH = 256; unsigned int WIN_HEIGHT = WIN_WIDTH; unsigned int TEX_WIDTH = 1024; unsigned int TEX_HEIGHT = TEX_WIDTH; 使用窗口大小创建Open

我在使用大于OpenGL窗口或显示大小的纹理作为非显示渲染目标时遇到问题。

这个问题的解决方案是什么?

有一个简单的解决方案

假设您的(非显示)纹理为1024x1024,并且限制为256x256窗口/显示

unsigned int WIN_WIDTH = 256;
unsigned int WIN_HEIGHT = WIN_WIDTH;
unsigned int TEX_WIDTH = 1024;
unsigned int TEX_HEIGHT = TEX_WIDTH;
使用窗口大小创建OpenGL窗口:

glutInitWindowSize(WIN_WIDTH, WIN_HEIGHT);
但是,对于其他所有内容,请使用纹理大小:

glViewport(0, 0, TEX_WIDTH, TEX_HEIGHT);
gluOrtho2D(0.0, TEX_WIDTH, 0.0, TEX_HEIGHT);
glTexCoord2i(TEX_WIDTH, TEX_HEIGHT);