我以GLPaint为例...我试图将背景放到“ PaintingView”中,所以您可以在背景上绘制图片,最后将图像另存为文件.....我迷路了。
我正在加载PNG(512x512),并尝试在程序的开头进行“绘制”,但是它被绘制为64x64而不是512x512 ...
我在加载之前尝试将其作为绘画视图的子视图...但是,那么glReadPixels无法按预期方式工作(它仅考虑了PaintingView,而不考虑子视图)。另外PaintingView没有initWithImage方法...我需要glReadPixels在图像上工作(以及在修改中),但是我真的不知道为什么当我加载它时,纹理具有64x64的大小。
最佳答案
GLPaint示例项目在移动笔刷时使用GL_POINT_SPRITE绘制笔刷纹理的副本。在iPhone上,glPointSize限制为64x64像素。这是硬件限制,在模拟器中,我认为您可以将其放大。
听起来您正在尝试使用GL_POINT_SPRITE方法绘制背景图像,但这实际上不是您想要的。而是尝试绘制一个填充屏幕的扁平纹理框。
这是一些OpenGL代码,用于为2D框设置顶点和texcoords,然后绘制它:
const GLfloat verticies[] = {
0.0f, 0.0f,
1.0f, 0.0f,
0.0f, 1.0f,
1.0f, 1.0f,
};
const GLfloat texcoords[] = {
0, 0,
1, 0,
0, 1,
1, 1,
};
glVertexPointer(2, GL_FLOAT, 0, verticies);
glEnableClientState(GL_VERTEX_ARRAY);
glTexCoordPointer(2, GL_FLOAT, 0, texcoords);
glEnableClientState(GL_TEXTURE_COORD_ARRAY);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, texture);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
希望有帮助!请注意,您需要根据相机投影的设置方式不同地指定顶点。就我而言,我使用下面的代码设置了GL_MODELVIEW-我不确定GLPaint示例是如何做到的。
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glOrtho(0, 1.0, 0, 1.0, -1, 1);