From b0e7d850d1471fd8e5aa99a67ec7ea9721b692ad Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Mon, 3 Oct 2005 16:11:21 +0000 Subject: finish up some missing code --- src/mesa/main/texrender.c | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) (limited to 'src/mesa/main/texrender.c') diff --git a/src/mesa/main/texrender.c b/src/mesa/main/texrender.c index f7f3fdb4b0..ae4a2a5527 100644 --- a/src/mesa/main/texrender.c +++ b/src/mesa/main/texrender.c @@ -27,14 +27,29 @@ static void texture_get_row(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, GLint x, GLint y, void *values) { - /* XXX unfinished */ + const struct texture_renderbuffer *trb + = (const struct texture_renderbuffer *) rb; + const GLint z = trb->Zoffset; + GLchan *rgbaOut = (GLchan *) values; + GLuint i; + for (i = 0; i < count; i++) { + trb->TexImage->FetchTexelc(trb->TexImage, x + i, y, z, rgbaOut + 4 * i); + } } static void texture_get_values(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count, const GLint x[], const GLint y[], void *values) { - /* XXX unfinished */ + const struct texture_renderbuffer *trb + = (const struct texture_renderbuffer *) rb; + const GLint z = trb->Zoffset; + GLchan *rgbaOut = (GLchan *) values; + GLuint i; + for (i = 0; i < count; i++) { + trb->TexImage->FetchTexelc(trb->TexImage, x[i], y[i], z, + rgbaOut + 4 * i); + } } static void @@ -170,6 +185,13 @@ wrap_texture(GLcontext *ctx, struct gl_renderbuffer_attachment *att) trb->Base.Delete = delete_texture_wrapper; trb->Base.AllocStorage = NULL; /* illegal! */ + /* XXX fix these */ + trb->Base.RedBits = trb->TexImage->TexFormat->RedBits; + trb->Base.GreenBits = trb->TexImage->TexFormat->GreenBits; + trb->Base.BlueBits = trb->TexImage->TexFormat->BlueBits; + trb->Base.AlphaBits = trb->TexImage->TexFormat->AlphaBits; + trb->Base.DepthBits = trb->TexImage->TexFormat->DepthBits; + att->Renderbuffer = &(trb->Base); } -- cgit v1.2.3