gpt4 book ai didi

c++ - 在 sdl 中使用不同的 alpha 值进行绘图

转载 作者:行者123 更新时间:2023-11-30 16:16:09 25 4
gpt4 key购买 nike

我正在尝试在SDL2中绘制吴晓林的线条算法,由于alpha channel 问题我什么也没得到,我在表面上绘制它,然后从表面创建纹理

我已经尝试过了int SDL_SetTextureBlendMode(SDL_Texture* 纹理,SDL_BlendMode 混合模式) 具有所有可能的混合模式

获取颜色:(我认为这里没有错误)

void LINE_PlotPoint(SDL_Surface * surface,int x,int y, double alpha)
{
Uint32 *pixels = (Uint32 *)surface->pixels;
Uint32 pixel=SYS_GetForegroundColor();

Uint8 a= alpha*255;

pixel&=~amask;
pixel |= a;

pixels[ ( y * surface->w ) + x ] =pixel;
}

此任务的主循环是:

if(event.type==SDL_MOUSEMOTION)
{
SDL_GetMouseState(&i,&j);
i-=grect.x;
j-=grect.y;
TOOL_DrawLine(tempSurface,x,y,i,j,1);//Xiaolin Wu's line algorithm

if(tempTexture)
{
SDL_DestroyTexture(tempTexture);
}

tempTexture=TOOL_CreateLineTexture(tempSurface,&srect,&drect);//create texture from surface and calculating rect(src & dest)
if(tempTexture==NULL)
{
puts("error");
}
SDL_SetTextureBlendMode(tempTexture,SDL_BLENDMODE_BLEND);


SDL_FillRect(tempSurface,NULL,NULL);//delete pixel from surface (no need for it)

}

我之前已经尝试过使用 alpha channel =255 并且它工作正常,但是随着不同的 alpha 值没有出现任何东西

最佳答案

现在我发现了问题

只是我忘记将 alpha 值转移到正确的位置

pixel&=~amask;
pixel |= a << ashift;

关于c++ - 在 sdl 中使用不同的 alpha 值进行绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56752290/

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