标签: surface

在 SDL 中,SDL_Quit() 是否释放每个表面?

基本上,在程序终止之前将存在的表面上,我是否需要SDL_FreeSurface()为每个表面运行,或者会SDL_Quit()为我处理所有这些事情?

SDL_FreeSurface()我问这个问题主要是因为指向我的许多表面的指针是类成员,因此如果我想在它们各自的表面上运行,我需要跟踪每个类实例(在全局数组或其他东西中) 。如果 SDL_Quit() 能为我一下子完成这一切,我宁愿这样做:D

c c++ sdl surface

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

设置 DirectX9 表面像素

我试图在 D3DSURFACE9 中设置各个像素,但它们到处都是。我想我以前也这样做过,但这次似乎做不好。

3DLOCKED_RECT lrt;
if(D3D_OK == lpThis->sfRenderingCanvas->LockRect(&lrt,NULL,0))
{
   UINT pitch = lrt.Pitch;
   VOID *data;
   data = lrt.pBits;
   UINT Y = (UINT)xmsg.Y;
   UINT X = (UINT)xmsg.X;
   for(int z=0;xmsg.iNum;z++)
   {
      if( xmsg.iDataBlock[z]>0 )
         ((DWORD*)data)[X+Y*pitch+z] = 0xFFFFFF00;
      else
         ((DWORD*)data)[X+Y*pitch+z] = 0xFF000000;
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

Y 介于 0 和创建曲面时使用的高度之间
X 介于 0 和曲面的节距之间

有人能告诉我我做错了什么吗?而且,它的高度似乎是我的窗户的两倍。(^如果我尝试绘制超过 1/4 的行,它会覆盖其中的 1/2。)

c++ directx pixel surface set

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

3D 曲面图未显示

我正在尝试使用 matplotlib 制作一个简单的 3D 曲面图,但该图最终没有显示;我只得到空的 3D 轴。

这是我所做的:

from mpl_toolkits.mplot3d import Axes3D

x = np.arange(1, 100, 1)
y = np.arange(1, 100, 1)
z = np.arange(1, 100, 1)

fig = figure()
ax = fig.add_subplot(111, projection='3d')
ax.plot_surface(x, y, z, rstride=5, cstride=5) 
show()
Run Code Online (Sandbox Code Playgroud)

...我明白了: 在此输入图像描述

有什么建议么?

python matplotlib surface matplotlib-3d

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

如何在python中创建3D高度图

我有一个二维数组Z,用于存储该元素位置的高度。除了使用此处需要创建与Z大小相同的数组X和Y的方法外,还有没有更简单的方法来创建3D高度图?

3D表面高度图类似于此处的第一个表面图。

python 3d plot matplotlib surface

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

在matplotlib中的Surface前面显示轮廓

我一直在寻找答案,但是我似乎看不出为什么在我的代码中我无法使投影轮廓显示在表面“背后”。

from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
from matplotlib import cm
from mpl_toolkits.mplot3d import Axes3D
import numpy as np

fig = plt.figure()
ax = fig.gca(projection='3d')
X = np.array([[200,800,1500,2000,3000],[200,700,1500,2000,3000],[200,800,1500,2000,3000],[200,800,1500,2000,3000]])
Y = np.array([[50,50,50,50,50],[350,350,350,350,350],[500,500,500,500,500],[1000,1000,1000,1000,1000]])
Z = np.array([[0,0,33,64,71],[44,62,69,74,76],[59,67,72,75,77],[63,68,73,76,77]])

ax.plot_surface(X, Y, Z, rstride=1, cstride=1, alpha=0.5)
cset = ax.contourf(X, Y, Z, zdir='z', offset=0, cmap=cm.coolwarm)
cset = ax.contourf(X, Y, Z, zdir='x', offset=200, cmap=cm.coolwarm)
cset = ax.contourf(X, Y, Z, zdir='y', offset=1000, cmap=cm.coolwarm)

ax.set_xlabel('X')
ax.set_xlim(200, 3000)
ax.set_ylabel('Y')
ax.set_ylim(0, 1000)
ax.set_zlabel('Z')
ax.set_zlim(0, 100)

plt.show()
Run Code Online (Sandbox Code Playgroud)

我一直使用此页面中的“填充轮廓图”之一作为模板:http : //matplotlib.org/mpl_toolkits/mplot3d/tutorial.html#scatter-plots …

python matplotlib surface python-2.7

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

Android MediaCodec 配置错误,崩溃

我正在尝试使用 mediaCodec 从 openGl ES 表面创建 mp4 视频。我有一个eglSurface,该eglSurface 的源表面是MediaCodec 输入表面。

我可以为eglSurface 设置不同的尺寸,当一种尺寸(宽度或高度)太大时:例如宽度= 5000 且高度= 512,MediaCodec 崩溃。

这是崩溃日志

android.media.MediaCodec$CodecException: Error 0xfffffc0e 
at android.media.MediaCodec.native_configure(Native Method) 
at android.media.MediaCodec.configure(MediaCodec.java:588)
Run Code Online (Sandbox Code Playgroud)

....

在某些设备(Galaxy s7 edge)上它不会崩溃,但生成 videoView 后不会播放视频。

对于小尺寸(例如屏幕尺寸),它可以在所有设备上正常工作

android surface opengl-es-2.0 egl android-mediacodec

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

MATLAB:在表面图上绘图

我正在MATLAB中绘制一个R ^ 2到R函数作为曲面图,我从上面进行颜色映射和查看.

surf(X, Y, data);
colormap(jet);
colobar;
view(2);
Run Code Online (Sandbox Code Playgroud)

它产生(带有一些额外的代码)类似的东西

在此输入图像描述

虽然函数的真实性质(为了理解这个问题)可以从以下角度更好地观察:

在此输入图像描述

我想在我的原始情节(从上面看)上绘制一个圆圈.就像是...

在此输入图像描述

然而,我似乎无法实现这一点,因为在绘图上绘制平面内元素使它们出现在xy轴上,我的表面图覆盖了它.例如,打电话

circle_pos = [ +1 +1; -1 -1; -1 +1; +1 -1;]
circle_rad = 0.2 * ones(4,1);
viscircles(circle_pos, circle_rad);
Run Code Online (Sandbox Code Playgroud)

从我的表面绘图后,从顶部查看时没有可见的圆圈.缩放和旋转显示这些圆圈在xy平面上绘制,因此从上方看不见.

在此输入图像描述

如何将我的圆圈绘制在曲面图的顶部,以便从上方可以看到它们?当text在表面上绘图时会出现类似的问题,但是通过在基础函数z值之上指定az位置值来补救.似乎没有任何方法可以指定这些图形元素的z位置.

matlab plot surface

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

如何计算 C2 连续双三次贝塞尔曲面片的内部控制点

我正在尝试计算平滑连接管的双三次贝塞尔曲面的控制点。此示例为相应的贝塞尔曲线图块提供了 16 个控制点(采用 OpenSCAD 的语法):

[[[ 2 ,  2 , 0], [2.5, 1.5, 0], [3.5,  1 , 0], [4,  1 , 0]],
 [[ 2 ,  2 , 1], [2.5, 1.5, 1], [3.5,  1 , 1], [4,  1 , 1]],
 [[1.3, 1.3, 2], [1.8,  0 , 2], [ 3 , 0.5, 2], [4, 0.5, 2]],
 [[ 0 ,  0 , 2], [1.8,  0 , 2], [ 3 ,  0 , 2], [4,  0 , 2]]]
Run Code Online (Sandbox Code Playgroud)

给出了角点;沿边缘的控制点(以红色显示)是根据具有明显方向的切线计算的: 带有控制点和一些法向量的贝塞尔曲线补丁 该补片可以在平面 z=0、y=0、x=4 和 x=y 上进行镜像,以生成更大的复合曲面,该曲面沿所有四个接缝 …

bezier surface formula bicubic openscad

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

更改 Axes3D 上轴的位置

我正在使用 mpl_toolkits 库中的 mplot3d。当在图形上显示 3D 表面时,我意识到轴没有按照我希望的方式定位。

让我展示一下,我已将每个轴的位置添加到以下屏幕截图中:

在此输入图像描述

有没有办法改变轴的位置以获得这个结果:

在此输入图像描述

这是工作代码:

import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D

ax = Axes3D(plt.figure())
def f(x,y) :
    return -x**2 - y**2

X = np.arange(-1, 1, 0.02)
Y = np.arange(-1, 1, 0.02)
X, Y = np.meshgrid(X, Y)
Z = f(X, Y)
ax.plot_surface(X, Y, Z, alpha=0.5)

# Hide axes ticks
ax.set_xticks([-1,1])
ax.set_yticks([-1,1])
ax.set_zticks([-2,0])

ax.set_yticklabels([-1,1],rotation=-15, va='center', ha='right')

plt.show()
Run Code Online (Sandbox Code Playgroud)

我尝试过使用xaxis.set_ticks_position('left')声明,但它不起作用。

python surface mplot3d matplotlib-3d

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

如何使用 MediaRecorder 记录现有表面(不是 PercientSurface)

我正在尝试记录我无权访问的摄像机流。我只能访问自定义 SurfaceView,它从相机预览中获取图像并渲染图像。

我想将表面\相机视频保存到文件中。我正在使用 SDK 进行流式传输 (Amazon Chime),但我无权访问相机组件来添加用于录制的持久表面。

虽然我确实可以访问每个新图像“VideoRenderer.I420Frame”,但不确定如何将其积累到视频中。

我想到的另一种方法是使用“MediaRecorder”中的表面,但是当我使用这个表面(此视图)时,我得到了这个异常:

java.lang.IllegalArgumentException:不是 PercientSurface

我可以以某种方式创建一个 PersistentSurface 并将当前表面复制到新表面中,同时获取新图像吗?或者以其他方式解决这个问题?

这个类目前看起来像这样:

class RecordingVideoRenderView : SurfaceViewRenderer, VideoRenderView {

private var recording: Boolean = false
private val logger = ConsoleLogger(LogLevel.DEBUG)
private val TAG = "RecordingVideoRenderView"
private lateinit var recorder: MediaRecorder

constructor(context: Context) : super(context)

constructor(context: Context, attrs: AttributeSet) : super(context, attrs)

override fun renderFrame(frame: Any) {
    this.renderFrame(frame as VideoRenderer.I420Frame)
}

override fun initialize(initParams: Any?) {
    this.init((initParams as EglBase).eglBaseContext, null)
}

override fun finalize() {
    this.release()
}

fun startRecording() …
Run Code Online (Sandbox Code Playgroud)

android surface mediarecorder kotlin android-mediacodec

5
推荐指数
0
解决办法
1853
查看次数