标签: rendering

使用OpenGL调整图像大小

我想使用OpenGL调整图像大小.我更喜欢Java,但C++也没问题.

我对整个事情都很陌生,所以这就是我所看到的文字过程:

  1. 将图像作为纹理加载到OGL中
  2. 设置一些关于状态和过滤的东西
  3. 将不同大小的纹理绘制到另一个纹理上
  4. 将纹理数据转换为数组或其他内容

您认为使用OpenGL和GPU比使用基于CPU的BLIT库更快吗?

谢谢!

c++ java opengl rendering resize

3
推荐指数
1
解决办法
2385
查看次数

OpenGL - 帧缓冲区深度纹理与颜色深度纹理不同

我在OpenGL中进行阴影贴图 - 因此我创建了一个帧缓冲对象,我从灯光视图中渲染场景的深度.

glBindRenderbuffer(GL_RENDERBUFFER, color_buffer);
glRenderbufferStorage(GL_RENDERBUFFER, GL_RGBA, width, height);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, color_buffer);

glBindRenderbuffer(GL_RENDERBUFFER, depth_buffer);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT24, width, height);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depth_buffer);  

glGenTextures(1, &color_texture);
glBindTexture(GL_TEXTURE_2D, color_texture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, color_texture, 0);

glGenTextures(1, &depth_texture);
glBindTexture(GL_TEXTURE_2D, depth_texture);
glTexImage2D(GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT24, width, height, 0, GL_DEPTH_COMPONENT, GL_FLOAT, NULL);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, …
Run Code Online (Sandbox Code Playgroud)

c opengl graphics rendering glsl

3
推荐指数
1
解决办法
2936
查看次数

在QML中渲染ListView项 - 模拟器

您好我有以下简单的QML应用程序:

import QtQuick 1.0
import com.nokia.symbian 1.0

Window {
   id: window

   StatusBar {
       id: statusBar
       anchors.top: window.top
   }

   TabBar {
       id: tabBar
       anchors.top: statusBar.bottom

    TabButton {
        id: someButton
        text: "Something"
        tab: somePage
    }
}

TabGroup {
    id: tabGroup
    anchors.top: tabBar.bottom
    anchors.bottom: toolBar.top
    anchors.left: parent.left
    anchors.right: parent.right
    Page {
        id: somePage
        ListView {
            id: someLView
            anchors.fill: parent
            model: someModel
            delegate:
                    Text {
                        text: name
                        color: "white"
                    }
        }
    }
}

ToolBar {
    id: toolBar
    anchors.bottom: window.bottom
    tools: ToolBarLayout {
        id: toolBarLayout …
Run Code Online (Sandbox Code Playgroud)

listview rendering emulation qml

3
推荐指数
1
解决办法
1603
查看次数

使用深度缓冲区和GL_LINES

我想绘制一个删除了隐藏边缘的对象的边缘.我想要应用的想法是首先将对象的面渲染到深度缓冲区,然后在第二次渲染中绘制边缘并启用深度测试.

由于不是所有的三角形边都应该是可见的,所以边是单独存储的(简单示例:在立方体中,对角线边缘不应该是可见的,尽管它们在那里,因为四边形被渲染为两个三角形).因此使用绘制面,使用单独的顶点缓冲区GL_TRIANGLES绘制边GL_LINES.

问题是隐藏边缘部分用此设置显示,可见边缘部分隐藏.我怎样才能取得适当的结果?

  • 没有深度测试:

    没有深度测试

  • 深度测试:

    通过深度测试

  • 渲染到深度缓冲区的面:

    只面对面

我使用带有附加颜色和深度缓冲区的帧缓冲区来绘制我的对象.

// Color buffer setup.
glBindTexture(GL_TEXTURE_2D, objectEdges);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 640, 360, 0, GL_RGBA, GL_UNSIGNED_BYTE, nil);

// Depth buffer setup.
glBindRenderbuffer(GL_RENDERBUFFER, objectFaces);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, 640, 360);

// Framebuffer setup.
glBindFramebuffer(GL_FRAMEBUFFER, framebuffer);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, 
                       GL_TEXTURE_2D, objectEdges, 0);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, 
                          GL_RENDERBUFFER, objectFaces);
assert(glCheckFramebufferStatus(GL_FRAMEBUFFER) == GL_FRAMEBUFFER_COMPLETE);
assert(glGetError() == GL_NO_ERROR);
Run Code Online (Sandbox Code Playgroud)

此设置没有任何问题.我绘制我的对象如下:

glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL);
glBindFramebuffer(GL_FRAMEBUFFER, framebuffer);
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); …
Run Code Online (Sandbox Code Playgroud)

opengl rendering visibility depth-buffer opengl-es-2.0

3
推荐指数
1
解决办法
3174
查看次数

删除jtable中的整行

我有一个JTable在mysql数据库上取得价值的东西.我制作了几个自定义列渲染器,以便根据JTable需要显示格式化数据.我现在需要的是在某些行上添加一些删除线,具体取决于每行中最后一个单元格(5)上的值是否具有特定的字符串值,例如(测试).通过必须在除最后一个单元格(具有测试值)之外的行的每个单元格中.它可以与其他自定义列渲染器一起使用而不会混淆吗?

谢谢!

java swing rendering jtable strikethrough

3
推荐指数
1
解决办法
4494
查看次数

RenderTransform vs PushTransform

我有一个形状(下面的红色路径),我必须在这个路径上应用TranslateTransform和ScaleTransform转换.但是如果我以这种方式使用Shape RenderTransform属性:

Path MyPath = new Path { Fill = new SolidColorBrush(Colors.Red) };
MyPath.Data = MyPathGeometry;
TransformGroup transf = new TransformGroup();
transf.Children.Add(new TranslateTransform(50, 50));
transf.Children.Add(new ScaleTransform(2, 2));
MyPath.RenderTransform = transf;
Run Code Online (Sandbox Code Playgroud)

我得到了这种类型的图纸:

在此输入图像描述

相反,如果我以这种方式使用DrawingContext PushTransform方法:

DrawingVisual MyPath = new DrawingVisual();

using (DrawingContext context = MyPath.RenderOpen()) {
   context.PushTransform(new TranslateTransform(50, 50));
   context.PushTransform(new ScaleTransform(2, 2));
   context.DrawGeometry(Brushes.Red, null, MyPathGeometry);
}
Run Code Online (Sandbox Code Playgroud)

我得到了这种类型的图纸:

在此输入图像描述

为什么这两条路径以不同的方式放置?使用PushTransform和RenderTransform有什么区别?在两种情况下我怎么能得到相同的结果?谢谢.

.net wpf rendering transformation

3
推荐指数
1
解决办法
1703
查看次数

在Android上为imageView渲染圆角

我有以下代码用于渲染带圆角的imageView.

public class RoundedCornerImageView extends ImageView {

private int rounded;
public RoundedCornerImageView(Context context) {
    super(context);
}

public RoundedCornerImageView(Context context, AttributeSet attrs) {
    super(context, attrs);
}

public RoundedCornerImageView(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
}


public int getRounded() {
    return rounded;
}

public void setRounded(int rounded) {
    this.rounded = rounded;

}


@Override
public void onDraw(Canvas canvas)
{


    Drawable drawable = getDrawable();

    int w = drawable.getIntrinsicHeight(),
        h = drawable.getIntrinsicWidth();

    Bitmap rounder = Bitmap.createBitmap(w,h,Bitmap.Config.ARGB_8888);
    Canvas tmpCanvas = new Canvas(rounder);

    // …
Run Code Online (Sandbox Code Playgroud)

android rendering android-2.3-gingerbread

3
推荐指数
1
解决办法
3785
查看次数

用另一种颜色选择jtable中的行

我使用此代码为不同颜色的ly jtable行着色:

table.setDefaultRenderer(Object.class, new DefaultTableCellRenderer()
    {
        @Override
        public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column)
        {
            final Component c = super.getTableCellRendererComponent(table, value, isSelected, hasFocus, row, column);
            c.setBackground(row % 2 == 0 ? Color.WHITE : Color.LIGHT_GRAY);

            return c;
        }
    });
Run Code Online (Sandbox Code Playgroud)

它有效,现在我想将用户选择的行着色为与上述颜色不同的另一种颜色:

table.setSelectionBackground(Color.RED);
Run Code Online (Sandbox Code Playgroud)

但它做了什么我怎样才能做到这一点?

先感谢您

java swing rendering jtable selection

3
推荐指数
1
解决办法
4215
查看次数

如何创建包含(并显示)其他UIElements作为子项的自定义UIElement派生类?

假设我想创建一个直接继承的类,UIElement并且能够包含一个或多个[外部添加] UIElement作为子项 - 比如Panels和其他容器控件.很容易让班级UIElement以某种形式或其他形式收集s,但我如何让它们与我的班级一起展示/呈现?

我认为必须将它们添加到可视化树为我自己的孩子,UIElement以某种方式(或可能的话,手动使他们通过LA去VisualTreeHelper.GetDrawing,并用做OnRender的DrawingContext?但似乎笨拙).

我不是想知道我可以-或者应该-从多个现成的控制,继承一样FrameworkElement,Panel,ContentControl等(如果有的话,我想知道如何,他们正在实施外部添加子元素的显示/渲染,如适用) .

我有理由希望在层次结构中尽可能高,所以请不要给我任何关于为什么XAML/WPF框架"合规"等是好事的讲座等.

c# wpf rendering custom-controls uielement

3
推荐指数
1
解决办法
3724
查看次数

使用Metal/OpenGL ES在iOS中渲染视频

如何使用Metal或OpenGL ES渲染视频?

我说的解码和显示 的 帧由我自己.

我很新Metal,OpenGL ES而且我不知道从哪里开始.

video rendering opengl-es ios metal

3
推荐指数
1
解决办法
3210
查看次数