小编vri*_*nce的帖子

在顶点和片段着色器中gl_Color和gl_FrontColor之间的关系是什么

我有传递顶点和片段着色器.

顶点着色器

void main(void)
{
    gl_TexCoord[0] = gl_MultiTexCoord0;
    gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}
Run Code Online (Sandbox Code Playgroud)

片段着色器

void main(void)
{
    gl_FragColor = gl_Color;
}
Run Code Online (Sandbox Code Playgroud)

那些产生空渲染(黑色不是像glClearBuffer那样的背景颜色).

如果我修改顶点着色器以将gl_FrontColor设置为gl_Color,它会渲染未触及的OpenGl缓冲区...具有传递着色器的预期行为.

void main(void)
{
    gl_FrontColor = gl_Color; //Added line
    gl_TexCoord[0] = gl_MultiTexCoord0;
    gl_Position = gl_ModelViewProjectionMatrix * gl_Vertex;
}
Run Code Online (Sandbox Code Playgroud)

我很困惑,如何设置顶点着色器中的gl_FrontColor可以更改片段1中gl_Color的值?我错过了什么?

opengl shader pixel-shader vertex-shader

20
推荐指数
1
解决办法
2万
查看次数

为什么静态const成员不能出现在像'switch'这样的常量表达式中

我有一些静态const成员的声明

.H

class MyClass : public MyBase
{
public:
    static const unsigned char sInvalid;
    static const unsigned char sOutside;
    static const unsigned char sInside;
    //(41 more ...)
}
Run Code Online (Sandbox Code Playgroud)

的.cpp

const unsigned char MyClass::sInvalid = 0;
const unsigned char MyClass::sOutside = 1;
const unsigned char MyClass::sInside = 2;
//and so on
Run Code Online (Sandbox Code Playgroud)

在某些时候,我想在交换机中使用这些值,如:

unsigned char value;
...
switch(value) {
    case MyClass::sInvalid : /*Do some ;*/ break;
    case MyClass::sOutside : /*Do some ;*/ break;
    ...
}
Run Code Online (Sandbox Code Playgroud)

但是我得到以下编译器错误:错误:'MyClass :: sInvalid'不能出现在常量表达式中.

我已经阅读了其他开关 - …

c++ gcc const switch-statement

13
推荐指数
2
解决办法
1万
查看次数

在两个应用程序之间共享OpenGL帧缓冲区/渲染缓冲区

假设我有一个应用程序A女巫负责通过OpenGL库在屏幕上绘制内容.为了实现紧密集成,我想让这个应用程序A完成它的工作,但是在FBO中或直接在渲染缓冲区中渲染,并允许应用程序对此缓冲区B具有只读访问权限以处理屏幕上的显示(基本上将其呈现为2D纹理).

似乎FBO属于OpenGL上下文,上下文在进程之间是不可共享的.我当然明白允许多个进程两个混乱的相同上下文是邪恶的.但在我的特殊情况下,我认为认为它可能非常安全是合理的.

注意:

应用程序A是一个QApplication,应用程序Bnative win32一个

编辑:

渲染大小接近全屏,我正在考虑2048x2048 32bits缓冲区(我现在不使用alpha通道,但为什么不使用后者).

c++ windows opengl qt

9
推荐指数
1
解决办法
9253
查看次数

如何在QTableWidget中设置过滤器选项

在我的应用程序中,我QtableWidget显示了多行,行编辑以输入字符串和按钮,需要在点击按钮时说明相同QTableWidget应该只显示那些有字符串输入行编辑的行.

我想用的QSortFilterProxy模型,但是QTableWidget是有setModel(...)方法的私人,所以我不能使用QSortFilterProxy在这种情况下模型.请告诉我如何在QTable Widget中实现Filter选项

qt

9
推荐指数
2
解决办法
1万
查看次数

Qt圆角矩形,为什么角落不同?

我尝试drawRoundedRect直接用方法绘制一个圆形矩形QPixmap(没有渲染引擎涉及这里exept纯Qt一个...),我仔细检查矩形的大小与我的pixmap的大小:

Pixmap : QSize(50, 73) 
Rectangle: QRect(0,0 48x11) 
Run Code Online (Sandbox Code Playgroud)

看到充足的空间......

编辑:一些代码

pixmap = QPixmap(50,73); //example size that match my case
QRectF rect(0,0,48,11);

QPainter painter(&pixmap);
painter.setRenderHint(QPainter::TextAntialiasing);
painter.setWorldMatrixEnabled(false);
painter.setPen(QPen()); //no pen
painter.setBrush(QBrush(color));
painter.drawRoundedRect(rect, 2.0, 2.0);
Run Code Online (Sandbox Code Playgroud)
  • 我禁用了世界转型......
  • 我将集合转换为统一...
  • 我尝试了几个半径(1.0,2.0,3.0,4.0)......
  • 我换笔宽,刷颜色......

但它始终以4个不同角落的直线结束!像那样 :

x和y的半径= 3.0

我直接将pixmap输出到一个文件,以确保我在显示期间没有刮它...相同的形状.

有人知道Qt圆形矩形半径小吗?我很久以前就看到过这个问题,但我并不清楚如何处理它!

c++ qt qt4 rasterizing

6
推荐指数
2
解决办法
9281
查看次数

如果没有上下文类型,则无法解析对成员“默认”的引用

此代码发生此错误,我不知道它意味着什么:

.alert(isPresented: $showingAlert) {
                    Alert(title: Text(alertTitle), message: Text(alertMessage), dismissButton: .default(Text("OK")))
Run Code Online (Sandbox Code Playgroud)

请任何帮助。

swiftui

5
推荐指数
1
解决办法
2万
查看次数