小编Jus*_*ers的帖子

2.0和2.0f之间的差异(显式浮动与双重文字)

我有一些关于放在f文字值旁边的问题.我知道它将它定义为float但是我真的需要它吗?这是否2.0f * 2.0f更快或编译任何不同2.0 * 2.0float a = 2.0;编译的方式是否与编译方式不同float a = 2.0f;

c c++

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

如何在mac终端上切换到vi的编辑模式

我是mac新手,试图从macbook终端编辑.gitignore文件,我输入

 vi .gitignore
Run Code Online (Sandbox Code Playgroud)

它打开文件,但不让我切换到编辑模式.如何在mac上切换模式?

macos vim

10
推荐指数
2
解决办法
4万
查看次数

在OpenGL中glTexParameter的范围是什么?

glTexParamter作用于所有纹理全局或仅是当前绑定的纹理.

例如,如果我在纹理加载时调用它:

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
Run Code Online (Sandbox Code Playgroud)

这在另一个纹理加载:

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
Run Code Online (Sandbox Code Playgroud)

当我绑定第一个纹理时它会使用我设置的最后一个值(GL_CLAMP)还是会使用绑定纹理时最初设置的值?

opengl 3d graphics opengl-es

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

平面与点之间的符号距离

我找不到一种找到点和平面之间的有符号距离的一致方法.给定一个定义为点和法线的平面,我该如何计算?

struct Plane
{
    Vec3 point;
    Vec3 normal;
} 
Run Code Online (Sandbox Code Playgroud)

math vector

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

如何使用PyOpenGL中的顶点数组对象和glDrawElements进行绘制

我有以下代码,只需在屏幕上绘制一个绿色三角形.它使用顶点数组对象和索引缓冲区绘制,并具有我可以制作的最简单的着色器.

起初我没有使用索引缓冲区,只是简单地进行绘制调用,glDrawArrays但是当我将其更改为使用时glDrawElements,屏幕上没有任何内容(它完全是黑色).

from OpenGL.GL import shaders
from OpenGL.arrays import vbo
from OpenGL.GL import *
from OpenGL.raw.GL.ARB.vertex_array_object import glGenVertexArrays, \
                                                  glBindVertexArray

import pygame

import numpy as np

def run():
    pygame.init()
    screen = pygame.display.set_mode((800,600), pygame.OPENGL)

    #Create the Vertex Array Object
    vertexArrayObject = GLuint(0)
    glGenVertexArrays(1, vertexArrayObject)
    glBindVertexArray(vertexArrayObject)

    #Create the VBO
    vertices = np.array([[0,1,0],[-1,-1,0],[1,-1,0]], dtype='f')
    vertexPositions = vbo.VBO(vertices)

    #Create the index buffer object
    indices = np.array([0,1,2], dtype='uint16')
    indexPositions = vbo.VBO(indices, target=GL_ELEMENT_ARRAY_BUFFER)

    indexPositions.bind()
    vertexPositions.bind()

    glEnableVertexAttribArray(0) # from 'location = 0' in …
Run Code Online (Sandbox Code Playgroud)

python opengl pyopengl vao

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

如何直接更新像素 - 使用CGImage和直接CGDataProvider

实际问题

几个答案将解决我的问题:

  1. 我可以强制a CGImage从直接数据提供程序(创建时CGDataProviderCreateDirect)重新加载其数据CGContextDrawImage吗?或者是否有其他方法可以设置self.layer.contents来做到这一点?
  2. 有没有CGContext配置,或技巧,我可以使用至少30 fps渲染1024x768图像CGContextDrawImage.
  3. 有没有人能够成功使用CVOpenGLESTextureCacheCreateTextureFromImage自己的纹理数据进行实时缓冲更新?我认为我最大的问题是创建一个,CVImageBuffer因为我从Apples的文档中复制了纹理的其他属性.如果有人有任何关于此的更多信息,那将是非常棒的.
  4. 关于如何以30 fps的速度将内存中的图像添加到屏幕上的任何其他指导.

背景(手):

我正在开发一个项目,我需要实时修改NPOT图像数据的像素(至少30 fps)并在iOS屏幕上绘制.

我的第一个想法是使用OpenGL glTexSubimage2D进行更新,不幸的是,最终速度非常慢(在iPad上为6 fps),因为驱动程序在每帧都将我的RGB数据转换为BGR.因此,请将它发送到您说的BGR中,我也是如此,但出于某种原因,您无法glTexSubImage2D使用GL_BGRgo figure 调用.我知道一些缓慢是因为它不是2图像数据的力量,但我的要求决定了这一点.

更多阅读引导我,CVOpenGLESTextureCacheCreateTextureFromImage但所有的例子是使用直接相机输入来获得CVImageBufferRef我尝试使用文档(没有官方但只是标题注释)来使我自己的CVImageBuffer形成我的图像数据,但它不适用于此(不错误只是调试器中的空纹理),这让我觉得Apple专门为处理实时摄像机数据而构建它,并且除了IDK之外,它还没有在这个区域之外进行过多次测试.

无论如何在通过倾倒OpenGL并将我的想法转换为CoreGraphics放弃我的尊严后,我被引导到这个问题最快的方法在iphone上绘制屏幕缓冲区 ,建议使用CGImage支持CGDataProviderCreateDirect,这允许您返回指向图像数据的指针CGImage需要它,真棒吗?好吧,它似乎没有像宣传的那样工作.如果我使用,CGContextDrawImage那么一切正常.我可以修改像素缓冲区,每次绘制时,它都应该从我的数据提供者那里请求图像数据,调用方法CGDataProviderDirectCallbacks(Note:它们似乎有内置优化,如果它具有与之相同的地址,则忽略更新的指针透水).CGContextDrawImage不是超快(大约18 fps),即使使用禁用插值也会超过6 fps.Apple的文档告诉我使用self.layer.contents将比快得多CGContextDrawImage.使用self.layer.contents第一次分配的工作,但从CGImage不请求从数据提供者重新加载,就像CGContextDrawImage我做的那样,即使我打电话[layer setNeedsDisplay].在我引用的SO问题中,用户通过每帧从数据源创建和销毁新的CGImage来展示他对问题的解决方案,这是一个绝对缓慢的过程(是的,我确实尝试过),所以是真正问题的时间.

注意:我已经分析了所有这些操作,并且知道问题确实是glTexSubImage针对OpenGL的,CGContextDrawImage并且确实是CoreGraphics的问题所以没有"go profile"的答案.

EDIT现在可以在http://github.com/narpas/image-sequence-streaming找到演示此技术的源代码.

opengl-es core-graphics objective-c core-video ios

7
推荐指数
1
解决办法
3352
查看次数

如何设计OpenGL DirectX"抽象层"

我正在阅读有关创建图形"抽象层"的信息,以便在图形平台之间切换.不幸的是,我无法找到关于这个主题的更多细节.这种抽象是否可以在功能级别上实现,具有类似的功能?

void pushMatrix(){
  if (directx){
     // do directx function

  }else if (opengl){
     // do opengl function
  }

}
Run Code Online (Sandbox Code Playgroud)

这是怎么回事?有没有更好的办法?有人能指出一些做这个或更多示例代码的事情的例子吗?

opengl directx abstraction opengl-es

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

NSDrawNinePartImage差距

我正在努力绘制自定义按钮/文本字段NSDrawNinePartImage.我在代码中将图像分割成九个部分并将其绘制成一个矩形NSDrawNinePartImage.

不幸的是,我在绘图模式上遇到了一些空白.我认为它与我的切片代码有关,但我将它们保存为我切片的图像,它们看起来都很好(我甚至将它们放在一起,它们看起来很好).尽管有些使用相同的图像,我使用它工作的一些情况也很好.

我非常有信心它归结为实际绘图.

您是否知道NSGraphicsContext会影响它的任何或其他设置或可能导致此问题的其他设置?

有差距

有差距

没有差距

没有差距

cocoa drawing appkit

6
推荐指数
1
解决办法
722
查看次数

如何从我的类别joomla 3.2.3创建rss feed?

Joomla 3.2的核心RSS源创建者是2.5吗?我想创建一个RSS源,其中包含我joomla类别中的一篇文章.

rss joomla joomla3.0

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

OpenGL顶点数组/缓冲区对象

问题1

删除VAO后,在某个VAO下创建的顶点缓冲区对象是否已删除?

一个例子:

glGenBuffers(1, &bufferObject);
glGenVertexArrays(1, &VAO);

glBindVertexArray(VAO);
glBindBuffer(GL_ARRAY_BUFFER, bufferObject);
glBufferData(GL_ARRAY_BUFFER, sizeof(someVertices), someVertices, 
             GL_STATIC_DRAW);
glEnableVertexAttribArray(positionAttrib);
glVertexAttribPointer(positionAttrib, 3, GL_FLOAT, GL_FALSE, 0, NULL);
Run Code Online (Sandbox Code Playgroud)

以后打电话时glDeleteVertexArrays(1, &VAO);,会bufferObject被删除吗?

我问的原因是我在网上看到了一些没有删除那些缓冲区对象的例子.

问题2

我可以为缓冲区对象分配的最大内存量是多少?它当然必须是系统依赖的,但我似乎无法找到它的估计.当视频RAM不够大时会发生什么?我怎么会知道?

opengl vbo vao

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