gpt4 book ai didi

c++ - SDL2 + OpenGL 彩色几何体

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:24:29 27 4
gpt4 key购买 nike

我想使用 OpenGL 在网络摄像头流上绘图。我正在使用一个名为 screen_surface_SDL_Surface 包含网络摄像头数据,我使用 (1) 将其呈现到屏幕上:

SDL_UpdateTexture(screen_texture_, NULL, screen_surface_->pixels, screen_surface_->pitch);
SDL_RenderClear(renderer_);
SDL_RenderCopy(renderer_, screen_texture_, NULL, NULL);

然后我试着在上面画一些几何图形:

glLoadIdentity();
glColor3f(1.0, 0.0, 1.0);
glBegin( GL_QUADS );
glVertex3f( 10.0f, 50.0f, 0.0f ); /* Top Left */
glVertex3f( 50.0f, 50.0f, 0.0f ); /* Top Right */
glVertex3f( 50.0f, 10.0f, 0.0f ); /* Bottom Right */
glVertex3f( 10.0f, 10.0f, 0.0f ); /* Bottom Left */
glEnd( );
glColor3f(1.0, 1.0, 1.0); //<- I need this to make sure the webcam stream isn't pink?

SDL_RenderPresent(renderer_);

我已经使用(摘录)初始化 OpenGL:

glDisable(GL_LIGHTING);
glDisable(GL_TEXTURE_2D);

glClearColor( 0.0f, 0.0f, 0.0f, 0.0f );
glViewport( 0, 0, res_width_, res_height_ );
glClear( GL_COLOR_BUFFER_BIT );

glMatrixMode( GL_PROJECTION );
glLoadIdentity();
glOrtho(0.0f, res_width_, res_height_, 0.0f, -1.0f, 1.0f);

子问题:如果我不将 glColor 重置为白色,则整个网络摄像头流都是粉红色的。我觉得这很奇怪,因为我认为 SDl_RenderCopy 在第一次调用 glColor 之前 已经渲染了该纹理。那么 SDL_RenderCopy 是如何工作的呢?

主要问题:我在网络摄像头源顶部的屏幕左上角看到一个整洁的 40x40 正方形(很好!)。但是,它不是粉红色,而是一种闪烁的暗紫色;似乎依赖于后台的摄像头。你能告诉我我忽略了什么吗?

编辑:

根据@rodrigo 的评论,这些是一些颜色分别设置为 R、G、B 和白色的图像:

Red Square Green Square Blue Square White Square

看这些,似乎底层纹理对颜色有一些影响。会不会是 OpenGL 仍在将(部分)纹理应用于四边形?

编辑:

我现在怀疑几何体是使用渲染纹理作为纹理绘制的,即使我已经调用了 glDisable(GL_TEXTURE_2D)。查看“白色方 block ”屏幕截图(下方),您可以看到白色四边形与右下角像素 的颜色相同。我猜四边形没有纹理坐标,所以只使用了右下角的纹素。了解这一点,更好的问题是:我如何禁用纹理?

White Square 2

最佳答案

我已经通过简单地添加解决了这个问题

glcontext_ = SDL_GL_CreateContext(window_);

SDL_Init 代码。我认为我对 openGL 函数(如 glDisable(GL_TEXTURE_2D))的所有调用都应用于错误的上下文。我猜,从 SDL 显式创建上下文会将正确的上下文设置为事件状态。

其他需要注意的事项:在使用 SDL_RenderCopy 之后使用纹理 几何时;我必须确保重置

glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);

在调用 glTexImage2d 之前,因为它使用

GL_UNPACK_ROW_LENGTH if it is greater than 0, the width argument to the pixel routine otherwise

(来自OpenGL docs)

关于c++ - SDL2 + OpenGL 彩色几何体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21378472/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com